使用以下代码:

var x = 'foo';
console.log(x.replace(x, "\\$&"));​

输出为“\foo”,如下所示:http://jsfiddle.net/mPKEx/

为什么不呢
'\\$&"?

我用“\$&”替换了x的全部,这只是一个计划旧的字符串,所以为什么当函数的第二个arg除了被替换为...时不应该做任何事情的时候,string.replace还是做了一些疯狂的替换...

最佳答案

$&是Javascript字符串替换中的特殊引用。它指向匹配的字符串。

$$-插入“$”
$&-引用当前模式匹配项的整个文本。
$`-指当前模式匹配项左侧的文本。
$'-指当前模式匹配项右边的文本。
$ n或$ nn-其中n或nn是十进制数字,插入第n个括号
子匹配字符串,前提是第一个参数是RegExp对象。

(Reference)

关于javascript - 奇怪的JavaScript字符串用$&替换行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12311192/

10-11 22:14
查看更多