根据这个网站,以下替换方法应该有效,尽管我持怀疑态度。 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]);
});
此外,我在字符串转义和RegEx表达式中遇到了问题,如下所示:
/\s......\s/g
与
不同 new Regex ("\s......\s" , "g")
或
new Regex ('\s......\s' , "g")
所以要小心!
答案 0 :(得分:48)
$ 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"
答案 1 :(得分:0)
我认为你正在寻找新的RegExp(模式,修饰符)。