2011-10-10 8 views
8

を正規表現を作成します。 しかし、私はregexpsが単に宣言時に文字列にラップされていない言語要素であるため、正規表現で使用する単語/フレーズの大きな配列を持っているため、正規表現を宣言する方法を見つけることができませんプログラムでハードコードしない限り私が持っているのであれば:JavaScriptが私は、このように置き換えるJavaScriptを作成することができることを知って、プログラム

var arr=['word', 'another', 'hello'];

を私が作るにしたい:

str = str.replace(/word/g, 'some value');

str = str.replace(/another/g, 'some value');

str = str.replace(/hello/g, 'some value');

Iとして、私は正規表現を使用することができます例を投稿してください空白などの式を正規表現に追加する私は正規表現の方法が必要です。最後に、evalを使用して提供しないでください、私は良い方法があると確信しています。

+0

あなたがgiのような修飾子を渡すことができ、文字列、なぜあなたは正規表現を使用しているにもありますか?単純な[文字列の置換](https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/String/replace)を実行してください。 – Quentin

+0

と置き換えパターンは、私が上で説明した理由で単純に正規表現です。 –

答えて

13

そのためには、RegExpコンストラクタ関数を呼び出す必要があります。例:

['word', 'another', 'hello'].forEach(function(word) { 
    var myExp = new RegExp(word, 'g'); 
    str = str.replace(myExp, 'some value'); 
}); 

コンストラクタの最初の引数は、文字通りあなたが//わたってるしきラップしまう何かを取る文字列が、あります。二PARAMTER等

0

あなたはその場でREG-EXPを生成する場合、あなたはあなたがこのように動的正規表現を構築することができますRegExpオブジェクト

var a = new RegExp("word") 
3

を使用することができます -

var word = 'hello'; 
var re = new RegExp("\\b" + word + "\\b","g"); 

あなたがよということを忘れないでください任意の\文字を使用してエスケープする必要があります\\

2
for(i in arr) 
{ 
    str = str.replace(new RegExp("\\"+arr[i],"g"), "some value") 
} 
関連する問題