2014年8月9日土曜日

JavaScript の new RegExp() で以下の様なエラーが出る場合は、
正規表現の書き方が間違っています。
Range out of order in character class
特に忘れやすいのがエスケープ記号 \ を 2 回書くことです。
var reg1 = /^([A-Z_\-\.])/  // こちらは通る
var reg2 = new RegExp('^([A-Z_\-\.])'); // エラー
// で定義する場合1回ですが、new RegExp() で書く場合は、
文字列として 1 度解釈されるのでエスケープ記号が消えないように \\ と 2 回書く必要があります。
var reg2 = new RegExp('^([A-Z_\\-\\.])'); 
以前、ブログで書いたはずなのですがすっかり忘れていて、
結構詰んでしまいました。

0 件のコメント:

コメントを投稿