web-dev-qa-db-fra.com

Quelle est l'expression régulière la plus simple pour valider les e-mails afin de ne pas les accepter aveuglément?

Lorsque les utilisateurs créent un compte sur mon site, je souhaite valider le serveur pour que les e-mails n'acceptent pas tous entrée.

Je vais envoyer une confirmation, d'une manière de faire un validation de la poignée de main .

Je cherche quelque chose de simple, pas le meilleur, mais pas trop simple qui ne valide rien. Je ne sais pas où la limitation doit être, car toute expression régulière ne fera pas la validation correcte car il n'est pas possible de le faire avec des expressions régulières.

J'essaie de limiter le sintax et la complexité visuelle inhérents aux expressions régulières, car dans ce cas, tout sera correct.

Quelle expression rationnelle puis-je utiliser pour ce faire?

72
eKek0
^\S+@\S+$
84
chaos

Il est possible d'écrire une expression régulière qui n'accepte que les adresses e-mail qui respectent les normes. Cependant, il existe des adresses e-mail qui ne respectent pas strictement les normes, mais qui fonctionnent toujours.

Voici quelques expressions régulières simples pour la validation de base:

Contient un caractère @:

@

Contient @ et un point quelque part après:

@.*?\.

A au moins un caractère avant le @, avant le point et après:

.+@.+\..+

N'a qu'un @, au moins un caractère avant le @, avant la période et après:

^[^@]+@[^@]+\.[^@]+$

L'utilisateur AmoebaMan17 suggère cette modification pour éliminer les espaces blancs:

^[^@\s]+@[^@\s]+\.[^@\s]+$
213
Guffa

Je pense que ce petit Tweak à l'expression par AmoebaMan17 devrait empêcher l'adresse de commencer/se terminer par un point et également arrêter plusieurs points les uns à côté des autres. Essayer de ne pas le rendre à nouveau complexe tout en éliminant un problème commun.

(?!.*\.\.)(^[^\.][^@\s]+@[^@\s]+\.[^@\s\.]+$)

Il semble fonctionner (mais je ne suis pas RegEx-pert). Résout mon problème avec les utilisateurs qui copient et collent les adresses e-mail à la fin des phrases qui se terminent par un point.

i.e: Voici ma nouvelle adresse e-mail [email protected].

3
Carl Howarth

^ [a-zA-Z0-9 _. + -] + @ [a-zA-Z0-9 -] +. [a-zA-Z0-9 -.] + $

  • Seulement 1 @
  • Plusieurs domaines et sous-domaines
2
coto

Faites votre choix.

Voici celui qui est conforme RFC 2822 Section 3.4.1 ...

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

Juste au cas où vous seriez curieux. :)

2
JP Alioto