2009-11-08 17 views
25

jQuery/Javascriptの正規表現に変数を渡す方法はありますか?jQuery/Javascriptの変数を正規表現に渡す方法

私のような何かをしたい

:Rubyで

var variable_regex = "bar"; 
var some_string = "foobar"; 

some_string.match(/variable_regex/); 

あなたが行うことができるようになります。

便利なポストが見つかり

some_string.match(/#{variable_regex}/)

How can I concatenate regex literals in JavaScript?

+0

の重複[?あなたはどのように正規表現で変数を使用しない](https://stackoverflow.com/questions/494035/how-:あなたは、複雑な正規表現を使用する場合は、文字列の連結を使用することができます正規表現で可変的に使用する) –

答えて

17

それは簡単です:

var variable_regex = "bar"; 
var some_string = "foobar"; 

some_string.match(variable_regex); 

ちょうど//を失う - Rubyのようなationが、あなたはRegExpコンストラクタを使用する必要があります。

var variable_regex = "b."; 
var some_string = "foobar"; 

alert (some_string.match("f.*"+variable_regex)); 
+1

私は複雑な正規表現を持っていましたが、可変パターンをハードコードされた式に補間したかったのですが、私は各正規表現置換を変数全体に設定すると思います。 –

+2

このバージョンで正規表現オプションを適用することはできません(大文字と小文字を区別しないなど)。私は@ジョナサンの答えはこれよりも適切だと思います。 – nzifnab

+0

また、マッチでのみ動作します。 replaceのような他の呼び出しでは、正規表現を明示的に構築する必要があります。 – bronson

44

Javascriptを補間をサポートしていません

var aString = "foobar"; 
var pattern = "bar"; 

var matches = aString.match(new RegExp(pattern)); 
+6

regexオプションを適用する場合、次のようにすることができます:大文字と小文字を区別しない新しいRegex(パターン、 'gi') – Mike

+0

@Mikeのコメントを修正する必要があります。 ** regex ** –

+1

だけでなく、 'new RegExp(pattern [、flags]) 'でなければなりません。ES2015はテンプレート文字列の式補間をサポートしています。 –

関連する問題