私の正規表現が間違っているのでわかりません:
_var domain = "google\.com\.br";
var reEmail = new RegExp("^([A-Za-z0-9_\-\.])+\@" + domain + "$");
_
メールを検証するためにこれが必要です。例:reEmail.test("[email protected]");
私はこのエラーを受け取ります:
文字クラスの範囲外
文字列を使用してRegExpを作成するため、_\-\.
は_-.
になり、それは無効な範囲です。 (それは_
から.
の範囲であり、正しくありません)
あなたはダブルエスケープする必要があります:
new RegExp("^([A-Za-z0-9_\\-\\.])+@" + domain + "$");
こうすると、\\
は文字列で\
になり、RegExpで-
をエスケープするために使用されます。
編集:
文字列でRegExpを作成する場合は、結果をログに記録して、すべてを正しく行ったかどうかを確認することが常に役立ちます。
例えばRegExpの一部
console.log("^([A-Za-z0-9_\-\.])+\@");
結果:
^([A-Za-z0-9_-.])+@