2009-07-31 9 views
16

私は以下のコードを持っていますが、実行時に正規表現オブジェクト(regex2)にいくつかのものを注入する必要があります。しかし、text.replaceは正規表現の文字列オブジェクトを好きではないようですので、どうすればこの作業を行えますか?Javascript String.replace動的正規表現を使用していますか?

var regex2 = /\|\d+:\d+/; 
document.write("result = " + text.replace(regex2, '') + "<br>"); 
+0

文字列をStringに変更します。その文字列が既にオブジェクトである場合 - ATMマシン、ピン番号など –

+0

.replace()コールはdocument.write()コール内で発生する必要がありますか? document.writeを呼び出す前にその値を割り当てることはできませんか?私はあなたの質問を正しく理解していない限り、それは問題を解決するように思えます。 – inkedmn

+0

私はAlexの同僚です。 stringObjは、実際のコードではなく、私たちが行っていたことを明確にするためのものでした。 –

答えて

52

あなたはRegExpコンストラクタ関数を使用して文字列から正規表現オブジェクトを行うことができますCMSへ

var regExp = new RegExp(myString); // regex pattern string 

text.replace(regExp, ''); 
+24

注目すべき点:* myString *は、「/ foo [123] /」ではなく「foo [123]」という、開始マーカーと終了マーカーがない正規表現です。 – BlaM

20

追加: RegExpコンストラクタは2番目のオプションのパラメータフラグ
(15.10.4 The RegExp Constructor)

を持っています
var text = "This is a Test."; 

var myRegExp = new RegExp('teST','i'); 

text.replace(myRegExp,'Example'); 
// -> "This is a Example." 

asあなたが見ることができるフラグT

  • グラム - >グローバル検索(すべての出現)
  • I - >大文字と小文字を区別しない
  • メートル - >マルチ
+1

文字列を動的に構築してから、2番目のパラメータにフラグを指定する必要があります。 新しいRegExp( "^" +動的+ "+ |" +動的+ "+ $"、 "g")。 –

4
var value = "2012-09-10"; 
value = value.replace(/([0-9]{4})[\/-]([0-9]{2})[\/-]([0-9]{2})/,"$3/$2/$1"); 
alert(value); 

これは

10/09/2012 
0

を示すであろうあなたは、evalに、

を使用することができます
new RegExp(eval("/"+str+"/i")); 

bye ...

+3

これは無意味な間違いのようです。 – Ryan

+2

評価は不要です。 – jdhildeb

+0

1つしか必要ない場合は、2つの 'RegExp'インスタンスも作成します。 –

関連する問題