Согласно этому сайту должен работать следующий метод замены, хотя я скептически отношусь.
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")
так что будьте осторожны!