使用以下代码:
var x = 'foo';
console.log(x.replace(x, "\\$&"));
输出是'\foo',如下所示:http: //jsfiddle.net/mPKEx/
为什么不是
'\\$&"?
我用 "\$&" 替换所有 x ,这只是一个计划的旧字符串,所以为什么 string.replace 做一些疯狂的替换,当函数的第二个参数不应该做任何事情时,除了被替换......
使用以下代码:
var x = 'foo';
console.log(x.replace(x, "\\$&"));
输出是'\foo',如下所示:http: //jsfiddle.net/mPKEx/
为什么不是
'\\$&"?
我用 "\$&" 替换所有 x ,这只是一个计划的旧字符串,所以为什么 string.replace 做一些疯狂的替换,当函数的第二个参数不应该做任何事情时,除了被替换......
$& 是 Javascript 字符串替换中的一个特殊引用。它指向匹配的字符串。
$$ - 插入一个“$” $& - 指当前模式匹配的整个文本。 $` - 指当前模式匹配左侧的文本。 $' - 指当前模式匹配右侧的文本。 $n 或 $nn - 其中 n 或 nn 是十进制数字,插入带括号的第 n 个 子匹配字符串,前提是第一个参数是 RegExp 对象。
(参考)
在你的情况下:
var x = 'foo';
console.log(x.replace(x, function() {return '\\$&'}));
查看差异:http: //jsfiddle.net/mPKEx/10/
您可以指定一个函数作为第二个参数。上述特殊替换模式($$、$&、$`、$'、$n 或 $nn)不适用于这种情况。