Je ne sais pas car mon regex est incorrect:
var domain = "google\.com\.br";
var reEmail = new RegExp("^([A-Za-z0-9_\-\.])+\@" + domain + "$");
J'en ai besoin pour valider un email, exemple: reEmail.test("[email protected]");
Je reçois cette erreur:
Plage hors de l'ordre dans la classe de caractères
Parce que vous créez le RegExp à l'aide d'une chaîne, le _\-\.
devient _-.
et c'est la plage non valide. (C'est une gamme de _
à .
et ce n'est pas correct)
Vous devez double échapper :
new RegExp("^([A-Za-z0-9_\\-\\.])+@" + domain + "$");
De cette façon, le \\
devient un \
dans la chaîne et est ensuite utilisé pour échapper à -
dans RegExp.
MODIFIER:
Si vous créez RegExp par chaîne, il est toujours utile de consigner le résultat afin de voir si vous avez tout fait correctement:
par exemple. votre partie du RegExp
console.log("^([A-Za-z0-9_\-\.])+\@");
résulte en:
^([A-Za-z0-9_-.])+@