В соответствии с этим сайтом должен работать следующий метод замены, хотя я скептически отношусь. 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 и не передаю какие-либо параметры, переданные в соответствие функции?
Обновление
Он работает при использовании
text.replace( /.../g, myfunc($1) );
Переводчик JavaScript ожидает закрытия, - видимые пользовательские функции, похоже, приводят к проблемам с областью, то есть дальнейшие пользовательские функции не будут вызываться. Первоначально я хотел избегать замыканий, чтобы предотвратить потребление необходимой памяти, но есть уже гарантии.
Чтобы передать аргументы вашей собственной функции, сделайте это так (в котором аргумент [0] будет содержать все совпадение:
result= text.replace(reg , function (){
return wrapper(arguments[0]);
});
Кроме того, у меня возникла проблема в escape-последовательности строк и, следовательно, в выражении RegEx:
/\s......\s/g
не совпадает с
new Regex ("\s......\s" , "g")
или new Regex ('\s......\s' , "g")
Поэтому будьте осторожны!