7
votes

Meilleures pratiques pour la validation d'adresse email (y compris les adresses + dans gmail)

Je sais qu'il y a beaucoup de questions sur la validation des courriers et des regex spécifiques. J'aimerais savoir quelles sont les meilleures pratiques pour la validation des courriels en ce qui concerne le Nom d'utilisateur+anythingelse@gmail.com Code> Trick ( Détails ici ). Ma validation actuelle pour la validation JavaScript est la suivante, mais elle ne prend pas en charge le + code> dans la poignée:

/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/


5 commentaires

C'est à peine une affaire quand elle fait partie de la norme de messagerie.


N'utilisez pas de regex pour la validation par courrier électronique, autrement que de saisir des brouillages évidents. Envoyez simplement l'utilisateur un message électronique avec un lien «Activation». Il n'y a pas de réceptions de bocyprorog pour la validation par e-mail. Au moins aucun qui convient à une feuille de papier A4, même lorsqu'il est imprimé dans une police minuscule, mais lisible, de police ;-) ( régulier-expressions.info/email.html )


@Tloach Je considère que c'est un tour si tous les services de messagerie le supportent de manière à envoyer le courrier électronique à la première partie de la poignée avant le + quelle que soit la pièce après le + - Je n'étais même pas au courant que cela faisait partie de la norme.


@Duroth je suis d'accord. Malheureusement, nous construisons un site d'une carte créative qui met un chèque ou X à côté de la ligne de messagerie après avoir flou du champ de saisie. Cet aspect créatif nécessite une validation JS sur Flou.


Cela refuserait mon adresse e-mail dans laquelle la pièce avant le @ n'est qu'un * caractère *. L'adresse e-mail est valide.


5 Réponses :


11
votes

+ est un Caractère valide dans une adresse email . Peu importe si le domaine n'est pas gmail.com ni googlemail.com

Les regexs ne sont pas en fait un très bon moyen de valider des courriels, mais si vous souhaitez simplement modifier votre regex pour gérer le plus, changez-la. à ce qui suit: xxx

comme exemple de la manière dont cette regex ne validait pas contre la spécification: le courrier électronique .. @ -. COM est valide selon lui.


7 commentaires

Je serais curieux de savoir quel est le meilleur pour gérer la validation d'adresse email.


Je suppose qu'il veut dire qu'il est préférable d'utiliser une bibliothèque éprouvée testée plutôt que de rouler votre propre regex. Apache Commons est un exemple Java d'une telle bibliothèque.


Voir Stackoverflow.com/Questtions/3232/...


Est-ce qu'il veut dire le format de l'email? Ou la validité de l'e-mail?


@ Ben S Merci pour la Regexp mise à jour. Je devais ajouter un autre `avant votre \ + \ +` pour fonctionner. Je n'étais pas au courant de + faisant partie de la spécification afin que cela soit mis en évidence. Je sais maintenant pour l'avenir.


J'irais plus loin que "ce n'est pas un très bon moyen": c'est mathématiquement impossible à valider (toutes possibles) adresses électroniques avec des regexes. La grammaire définissant le format des adresses électroniques est une grammaire de type 2 Chomsky, et les regexnes ne sont capables que de traiter avec les grammaires de type 3 chomsky: EN.Wikipedia.org/wiki/chomsky_gammar#The_Hierarchy


VOUS REGEXP DONNER MON THE ERREUR: Compilation a échoué: Plage hors de l'ordre dans la classe de caractères à décalage 16 . Il faut une barre oblique inverse devant le premier 'moins'. Voir REGEX101



5
votes

Si vous devez valider des courriels via regexp, alors Lire la norme ou au moins Cet article .

La norme suggère d'utiliser Cette réégycle: xxx

si cela ne vous effraie pas, il devrait :)


2 commentaires

De l'article, vous liez à: "Ne copiez pas aveuglément des expressions régulières des bibliothèques en ligne ou des forums de discussion." De plus, cette regex toujours ne valide pas complètement à la spécification.


@Aaron merci, c'est très effrayant. Je vais prétendre que je n'ai jamais vu cela avant - surtout les personnages codés!



3
votes

J'aurais tendance à aller avec quelque chose sur les lignes de /.+@.+\..+/ pour vérifier les erreurs simples. Ensuite, j'enverrais un courrier électronique à l'adresse pour vérifier qu'elle existe en fait, car la plupart des frappes de frappe entraîneront toujours des adresses électroniques valides syntaxiquement.


0 commentaires

2
votes

Les spécifications permettent de vraiment des adresses e-mail laides folles. Je suis souvent très ennuyé par des sites Web se plaignant même d'adresses électroniques valides parfaitement normales, s'il vous plaît, essayez de ne pas rejeter les adresses e-mail valides. Il vaut mieux accepter des adresses illégales que de rejeter les juridiques.

Comme les autres l'ont suggéré, j'irais avec une simple régexpe comme /.+@.+/ puis envoie un email de vérification. S'il est assez important de valider, il est suffisamment important de vérifier, car une adresse électronique légale peut encore appartenir à une personne autre que votre visiteur. Ou contenir une faute typographique inattendue mais fatale.

* Modifier: supprimé le point de la partie de domaine de la regex, car A @ à est toujours une adresse électronique valide. Donc, même ma validation super simplifiée rejetée d'adresses valides. Y a-t-il un inconvénient pour tout simplement accepter tout ce qui contient un @ avec quelque chose devant et derrière elle?


1 commentaires

Il n'y a aucune raison pour que le gouvernement des Tonga ne puisse pas ajouter d'entrée MX dans le fichier à cctld, faisant une adresse telle que mcv @ à une adresse e-mail réelle et fonctionnelle. Ils ont déjà un serveur Web en cours d'exécution sur http: // à (pour un service de désactivé URI), il n'est donc certainement pas irréaliste.