我有这段代码
var str = "Some text :$0";
var i = 0;
alert(str.replace(new RegExp("\:\$" + i, "g"), 'here'));
请参阅here。
为什么不起作用?如果我这样做/\:\$:0/g
而不是使用RegExp
对象,那么它可以工作,但我不能在模式中使用变量。怎么了?
答案 0 :(得分:6)
因为在字符串文字中,\
具有特殊含义。如果您想在{em>正则表达式中实际放置\
,则需要在字符串文字中对其进行转义:
new RegExp("\\:\\$" + i, "g")
但是:
在正则表达式中没有特殊含义,不需要转义它:
new RegExp(":\\$" + i, "g")
var str = "Some text :$0";
var i = 0;
console.log(str.replace(new RegExp(":\\$" + i, "g"), 'here'));