正規表現の書き方が間違っています。
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 件のコメント:
コメントを投稿