J'ai l'expression régulière suivante qui correspond à un format d'adresse e-mail:
^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$
Ceci est utilisé pour la validation avec un formulaire utilisant JavaScript. Cependant, il s'agit d'un champ facultatif. Par conséquent, comment puis-je modifier cette expression régulière pour qu'elle corresponde à un format d'adresse e-mail ou à une chaîne vide?
D'après ma connaissance limitée des regex, je pense que \b
correspond à une chaîne vide et |
signifie "Ou", j'ai donc essayé de faire ce qui suit, mais cela n'a pas fonctionné:
^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$|\b
Pour faire correspondre pattern
ou une chaîne vide, utilisez
^$|pattern
^
Et $
Sont respectivement le début et la fin des ancres de chaîne.|
Est utilisé pour désigner des remplaçants, par exemple this|that
.\b
\b
Dans la plupart des saveurs est une ancre "limite de mot". C'est une correspondance de largeur nulle, c'est-à-dire une chaîne vide, mais elle ne correspond qu'à ces chaînes à des endroits très spécifiques , à savoir aux limites d'un mot.
Autrement dit, \b
Est situé:
\w
Et \W
Consécutifs (l'une ou l'autre commande): ^
Et \w
\w
\w
Et $
\w
Ce n'est pas anodin selon les spécifications.
Une alternative serait de placer votre expression rationnelle entre parenthèses non capturantes. Rendez ensuite cette expression facultative en utilisant le ?
qualificatif, qui recherchera 0 (c'est-à-dire une chaîne vide) ou 1 instances du groupe non capturé.
Par exemple:
/(?: some regexp )?/
Dans votre cas, l'expression régulière ressemblerait à ceci:
/^(?:[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+)?$/
Non |
"ou" opérateur nécessaire!
Ici est la documentation de Mozilla pour la syntaxe JavaScript Regular Expression.
Je ne sais pas pourquoi vous souhaitez valider une adresse e-mail facultative, mais je vous suggère d'utiliser
^$|^[^@\s]+@[^@\s]+$
sens
^$ empty string
| or
^ beginning of string
[^@\s]+ any character but @ or whitespace
@
[^@\s]+
$ end of string
Vous n'empêcherez pas les faux e-mails de toute façon, et de cette façon, vous n'empêcherez pas les adresses valides.
\ b correspond à une limite de Word. Je pense que vous pouvez utiliser ^ $ pour une chaîne vide.