正規表現に変数を使う
"abcdefghijklmnopqrstuvwxyz"から"EFG"を大文字小文字を無視して正規表現で抜き出すとする。
var str = "abcdefghijklmnopqrstuvwxyz"; var result = str.match(/EFG/i); alert(result); //efg
問題なく抜き出せるが、マッチパターンが/EFG/とハードコーディングされている。
EFGを変数に置き換えてみる
var str = "abcdefghijklmnopqrstuvwxyz"; var pattern = "EFG"; var result = str.match("/" + pattern + "/i"); alert(result); //null
nullとなり、正常に動いていない。
マッチパターンが文字列として渡されている為だと思われるのだが、/pattern/と書くと今度は変数patternが文字列patternとして渡されるので、やはり違った動きになる。
なのでRegExpオブジェクトを使う
var str = "abcdefghijklmnopqrstuvwxyz"; var pattern = "EFG"; var qualifier = "i"; var reg = new RegExp(pattern, qualifier); var result = str.match(reg); alert(result); //efg
これを応用すればfor文中などでマッチパターンを動的に組み上げられる様になる。