Theo trang này, phương pháp thay thế sau đây sẽ hoạt động, mặc dù tôi hoài nghi. http://www.bennadel.com/blog/55-Using-Methods-in-Javascript-Replace-Method.htmJavascript: Chuyển một hàm có kết quả phù hợp để thay thế (regex, func (arg)) không hoạt động
Mã của tôi là như sau:
text = text.replace(
new Regex(...),
match($1) //$.. any match argument passed to the userfunction 'match',
// which itself invokes a userfunction
);
Tôi đang sử dụng Chrome 14, và không có được thông qua bất kỳ thông số truyền cho phù hợp chức năng?
Cập nhật:
Nó hoạt động khi sử dụng
text.replace(/.../g, myfunc($1));
Các thông dịch viên JavaScript hy vọng một đóng cửa, - userfunctions rõ ràng dường như dẫn đến các vấn đề phạm vi nghĩa userfunctions thêm sẽ không được gọi. Ban đầu tôi muốn tránh đóng cửa để ngăn tiêu thụ bộ nhớ cần thiết, nhưng đã có các biện pháp bảo vệ.
Để vượt qua các đối số chức năng riêng của bạn làm điều đó như thế này (trong đó lập luận [0] sẽ chứa toàn bộ trận đấu:
result= text.replace(reg , function(){
return wrapper(arguments[0]);
});
Ngoài ra tôi đã có một vấn đề trong chuỗi-thoát và do đó RegEx biểu hiện như sau:
/\s......\s/g
là không giống như
new Regex ("\s......\s" , "g")
hoặc 0.123. new Regex ('\s......\s' , "g")
vì vậy hãy cẩn thận!
Ông có thể làm rõ những gì bạn có nghĩa là bằng cách sử dụng 'text.replace (/ .../g, myfunc ($ 1)); '? Tôi tin rằng thực sự không hoạt động, vì '$ 1' phải nằm trong một chuỗi. – JacobEvelyn
Xem nhận xét của tôi về câu trả lời của Joe và tại đây để có ví dụ: https://github.com/lsauer/KeyBoarder/blob/master/keyboarder.js#L511 –
Tôi vẫn không chắc mình hiểu. Sử dụng một hàm trong đó có ý nghĩa với tôi, nhưng hy vọng '$ 1' có giá trị thì không. – JacobEvelyn