動かざることバグの如し

近づきたいよ 君の理想に

Javascript+正規表現の際に変数使いたければnew RegExpを使え

Javascriptでマッチするかどうかは以下のようにしてできる。文字列に「あ」が含まれているかどうかチェックしたい場合

var str = "あいうえお";
if(str.match("あ")){
  console.log('match!');
}

この場合は正規表現を使ったマッチではないので変数が使える

var str = "あいうえお";
var match = "あ";
if(str.match(match)){
  console.log('match!');
}

ただ、以下の様に正規表現を利用してマッチしようとすると上手くいかない。文字列「match」を正規表現にかけてしまうのである

// 動かない例
var str = "あいうえお";
var match = "^あ";
if(str.match(/match/)){
  console.log('match!');
}

対処として正規表現オブジェクトを生成してあげてそれでチェックしてあげる

var reg = new RegExp("^あ");
if(str.match(reg)){
  console.log('match!');
}