2016-09-19 93 views
-3

我有這樣的代碼JavaScript的正則表達式替換中的()不工作

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

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

here

爲什麼它不起作用?如果我這樣做/\:\$:0/g而不是使用RegExp對象,那麼它可以工作,但我不能以這種方式在模式中使用變量。怎麼了?

+0

'新的RegExp( 「:\\ $」 +我,「g」)',這裏https://jsfiddle.net/3zyr03h0/1/ –

+0

檢查小提琴。 –

+1

有*必須*是一個規範dupe這... –

回答

6

因爲在字符串文字中,\有特殊的含義。如果你想真正把\正則表達式,你需要轉義字符串文字中:

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

相關問題