Согласно этому сайту, следующий метод замены должен работают, хотя я настроен скептически. http://www.bennadel.com/blog/55-Using-Methods-in-Javascript-Replace-Method.htm
Мой код выглядит следующим образом:
text = text.replace(
new Regex(...),
match($1) //$.. any match argument passed to the userfunction 'match',
// which itself invokes a userfunction
);
Я использую Chrome 14 и делаю не передать какие-либо параметры, переданные в функцию match?
Обновление :
Это работает при использовании
text.replace( /.../g, myfunc($1) );
Интерпретатор JavaScript ожидает закрытия , - очевидные пользовательские функции, похоже, ведут к области проблемы, т.е. дальнейшие функции пользователя не будут вызваны. Изначально я хотел избежать замыканий, чтобы предотвратить необходимое потребление памяти, но меры предосторожности уже есть.
Чтобы передать аргументы вашей собственной функции, сделайте это следующим образом (где аргумент [0] будет содержать полное совпадение:
result= text.replace(reg , function (){
return wrapper(arguments[0]);
});
Дополнительно У меня была проблема с экранированием строки и, следовательно, с выражением RegEx, а именно:
/ \ s ...... \ s / g
не то же самое, что
new Regex ("\ s ...... \ s "," g ")
или new Regex ('\ s ...... \ s'," g ")
так что будьте осторожны!