動かざることバグの如し

3分経てば忘れそうなことをメモします

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!');
}