Javascript: Передача функции с совпадениями для замены (regex, func (arg)) не работает

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

так что будьте осторожны!

16
задан Lorenz Lo Sauer 29 August 2013 в 08:11
поделиться