正規表現で予約されている記号を \ や ¥ でエスケープする必要があります。
var regEscape = /y\.okano/; var regNoEscape = /y.okano/; var name = 'y_okano'; console.log(regEscape.test(name)); // false console.log(regNoEscape.text(name)); // true: . が _ とマッチ
上のコードのようにリテラルで生成する場合は問題無いですが、
以下のコードのようにコンストラクタから生成する場合は、
引数として渡す文字列の中で \ や ¥ がエスケープ文字として処理されるので、
文字列としてのエスケープ用と、正規表現としてのエスケープ用に、
\ や ¥ を2回連続で書く必要があります。
var regEscape = new RegExp('y\\.okano'); // => /y\.okano/ と同じ var regNoEscape = new RegExp('y\.okano'); // => /y.okano/ と同じ console.log(regEscape.test(name)); // false console.log(regNoEscape.text(name)); // true
RegExp についてはこちら
RegExp - Mozilla Developer Network
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp
0 件のコメント:
コメントを投稿