2016-09-19 7 views
-3

を働いていない私は、このコードのJavaScriptのRegExp()

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

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

を持ってhereを参照してください。

なぜ機能しないのですか?私がRegExpオブジェクトを使用するのではなく、/\:\$:0/gのようにすると動作しますが、そのようなパターンで変数を使用することはできません。どうしましたか?

+0

'新しい正規表現( "\\ $" + i、 "g") '、ここhttps://jsfiddle.net/3zyr03h0/1/ –

+0

のフィドルをチェックしてください。 –

+1

*これは標準的なものでなければなりません... –

答えて

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

関連する問題