JavaScript的String.replace()函数遇到$符合的时候不好使?

在JavaScript里编程的时候,字符串替换最常用的方式就是用String.replace()了。

比如:

但是,如果上面的代码替换成这样,结果会是怎样呢?

是不是很出乎意料?原始字符串里面的{0}竟然没有被替换掉,$&也消失了。

是不是JavaScript的bug? 其实不是的,原因是$符号在字符串替换的时候是一个特殊字符,所以在替换字符串的时候,如果有$符号,需要转义一下。

$符号的转义,要用$符号。即一个$要变成$$,是不是很绕?看例子:

在上面的例子里,我们把替换的字符串里面换成了$$,这时候替换的结果里面出现了$&,证明好使了。

那么,我们再实现一个可以复用的replace函数:

这样就可以了。