2012-05-01 13 views
0

私は必死です - 私は何が間違っているのか分かりません。私は '8969'のすべての出現を置き換えようとしますが、私はいつも元の文字列を取得します(tmpが文字列かintかにかかわらず)。多分すでに遅すぎるかもしれませんが、おそらく私は目が見えません。変数値を正規表現パターンとして使用する方法

var tmp = "8969"; 
alert("8969_8969".replace(/tmp/g, "99")); 

誰かが私を助けてくれますか?

+1

なぜ '/ tmp/g'という表現を使用しますか? – Lion

答えて

8

/文字は、この場合の正規表現のための容器です。したがって、 'tmp'は変数としてではなく、リテラル文字列として使用されます。正規表現を扱う

var tmp = /8969/g; 
alert("8969_8969".replace(tmp, "99")); 
+1

+1は本当に質問に答えています。 –

+0

ありがとう、今私はそれがうまくいかなかった理由を理解する:) – user1000742

5
alert("8969_8969".replace(/8969/g, "99")); 

又は

var tmp = "8969" 
alert("8969_8969".replace(new RegExp(tmp,"g"), "99")); 

Live DEMO

+0

私はこの作品を知っていますが、私は変数に値を持っています... でも、書き込む場合でも var tmp = 8969; 動作しません... – user1000742

+0

@ user1000742。更新された – gdoron

+2

** @ downvoterを参照してください。コメントをお願いしますか?** – gdoron

3

動的な方法:

var nRegExp = new RegExp("8969", 'g'); 
alert("8969_8969".replace(nRegExp, "99")); 
2

/tmp/g。これはフレーズ"tmp"を探している正規表現です。動的正規表現を作成するには、new RegExpを使用する必要があります。

JavascriptがTMPの その使用をサポートしていません
alert("8969_8969".replace(new RegExp(tmp,'g'), "99")); 
-1

、それが正規表現パターンと、文字通り「TMP」を使用しようとします。

"8969_8969".replace(new RegExp(tmp,'g'), "99") 
関連する問題