在JavaScript里编程的时候,字符串替换最常用的方式就是用String.replace()
了。
比如:
但是,如果上面的代码替换成这样,结果会是怎样呢?
是不是很出乎意料?原始字符串里面的{0}
竟然没有被替换掉,$&
也消失了。
是不是JavaScript的bug? 其实不是的,原因是$
符号在字符串替换的时候是一个特殊字符,所以在替换字符串的时候,如果有$符号,需要转义一下。
$
符号的转义,要用$
符号。即一个$
要变成$$
,是不是很绕?看例子:
在上面的例子里,我们把替换的字符串里面换成了$$
,这时候替换的结果里面出现了$&
,证明好使了。
那么,我们再实现一个可以复用的replace函数:
这样就可以了。