使用以下代码:
var x = 'foo';
console.log(x.replace(x, "\\$&"));
输出为'\ foo',如下所示:http://jsfiddle.net/mPKEx/
为什么不是
'\\$&"?
我用“\ $&”替换所有x这只是一个计划旧的字符串,所以为什么string.replace做了一些疯狂的替换,当函数的第二个arg不应该做任何事情,除了得到替代...
答案 0 :(得分:9)
$&安培;是Javascript的字符串替换中的特殊参考。 指向匹配的字符串。
$$ - Inserts a "$" $& - Refers to the entire text of the current pattern match. $` - Refers to the text to the left of the current pattern match. $' - Refers to the text to the right of the current pattern match. $n or $nn - Where n or nn are decimal digits, inserts the nth parenthesized submatch string, provided the first argument was a RegExp object.
答案 1 :(得分:2)
在你的情况下:
var x = 'foo';
console.log(x.replace(x, function() {return '\\$&'}));
查看差异:http://jsfiddle.net/mPKEx/10/
你可以specify a function as the second parameter。在这种情况下,上述特殊替换模式($$,$&,$`,$',$ n或$ nn)不。