Подтвердить что ты не робот

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 и не передаю какие-либо параметры, переданные в соответствие функции?

Обновление

Он работает при использовании

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")

Поэтому будьте осторожны!

4b9b3361

Ответ 1

$1 должен находиться внутри строки:

"string".replace(/st(ring)/, "gold $1") 
// output -> "gold ring"

с функцией:

"string".replace(/st(ring)/, function (match, capture) { 
    return "gold " + capture + "|" + match;
}); 
// output -> "gold ring|string"