replace()中的JavaScript RegExp不起作用

时间:2016-09-19 07:59:15

标签: javascript regex

我有这段代码

var str = "Some text :$0";
var i = 0;

alert(str.replace(new RegExp("\:\$" + i, "g"), 'here'));

请参阅here

为什么不起作用?如果我这样做/\:\$:0/g而不是使用RegExp对象,那么它可以工作,但我不能在模式中使用变量。怎么了?

1 个答案:

答案 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'));