Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

VALIDATEUR ADRESSE EMAIL (RFC 2822)


Information sur la source

Catégorie :Email & URI Classé sous : email, validateur, rfc2822, adresse, mailto Niveau : Débutant Date de création : 16/09/2008 Date de mise à jour : 11/11/2008 19:48:28 Vu : 4 078

Note :
2 / 10 - par 1 personne
2,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

Description

Validation d'adresse email conformément au spécification de la RFC 2822 :

http://tools.ietf.org/html/rfc2822#section-3.4.1




voir aussi le validateur email de fabienfs (plus simple mais tout a fait fonctionnel) :
http://regex.codes-sources.com/codes/ADRESSE-MAIL_47935.aspx
 

Source

  • // validateur EMail RFC2822
  • ^[a-z0-9!#$%&'*+/=?^_`{|}~-]+((\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)?)+@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9\-]*[a-z0-9])?$
  • // validateur acceptant les adresses des "têtes en l'air" qui ne désactive pas le CAPS.LOCK du clavier, ou qui appuis sur SHIFT en permanence... :
  • ^[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+((\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)?)+@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?$
  • // exemple javascript :
  • function validEmailRFC2822(aEmail) {
  • var rgxp = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+((\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)?)+@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9\-]*[a-z0-9])?$/
  • return rgxp.test(aEmail);
  • }
// validateur EMail RFC2822

^[a-z0-9!#$%&'*+/=?^_`{|}~-]+((\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)?)+@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9\-]*[a-z0-9])?$


// validateur acceptant les adresses des "têtes en l'air" qui ne désactive pas le CAPS.LOCK du clavier, ou qui appuis sur SHIFT en permanence... :
^[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+((\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)?)+@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?$


// exemple javascript :

function validEmailRFC2822(aEmail) {
  var rgxp = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+((\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)?)+@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9\-]*[a-z0-9])?$/
  
  return rgxp.test(aEmail);
}

Historique

16 septembre 2008 13:23:39 :
grosse correction d'une erreur avec les adresse type "a..b@b.c" et "a..@b.c" qui apparaissaient comme valide. avec les adresse type "a.b.c@d.e" et "a@b.c.d" qui apparaissaient comme non valide.
11 novembre 2008 19:48:29 :
ajout pour faire plaisir a Philho

Commentaires et avis

signaler à un administrateur
Commentaire de PhiLho le 30/09/2008 22:32:19 2/10

Ça me fait bien rigoler. Enfin, pas trop, je soupire, plutôt, quand je vois ENCORE une expression régulière pour des adresses e-mails qui rejette les majuscules. Rien que ça, ça discrédite complètement l'expression.
Accessoirement, le JavaScript n'a pas l'air très testé, il faudrait au moins échapper les slashes...
C'est bien de donner un lien vers la RFC, c'est mieux de s'y conformer...
Pour information, il y a une seule expression régulière qui se conforme vraiment à la RFC, elle fait 6600 caractères de long : http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
En fait, le seul bon moyen de tester une adresse est de la décomposer (local part/domain, puis les divers cas de chacun). On peut utiliser des expressions régulières pour chaque sous-cas élémentaire, mais essayer de construire une expression général est formidablement inefficace.

Désolé pour ces remarques négatives, mais je n'ai pas envie de tomber encore sur un site utilisant ce genre d'expression ! :-)

signaler à un administrateur
Commentaire de f0xi le 11/11/2008 19:46:13 administrateur CS

@Philho :

deja je parle de la RFC2822 de 2001 et non de la RFC822 de 1982!

de plus une adresse email est toujours minuscule, jamais majuscule. TRUC@hotmail.fr = truc@hotmail.fr
les adresses emails ne sont pas case-sensitive, je pense qu'on l'a suffisamment dit. si c'est cela que tu entendais voici un correction qui te fera soupirer un peu plus :

^[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+((\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)?)+@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?$

ici ma regexp n'est surement pas parfaite, mais fonctionne pour la plupart des cas même avec des adresses exotiques a bases de smilleys (^_^).

Pour ce qui est des tests, tu devrait pourtant savoir que je ne poste jamais sans tester avant. aprés on est pas a l'abris que si ça fonctionne bien chez nous, ça ne fonctionne pas forcement aussi bien chez d'autres.

signaler à un administrateur
Commentaire de PhiLho le 12/11/2008 08:16:23

Merci d'avoir tenu en compte mes remarques... :-)
Les adresses e-mails ne sont PAS toujours en minuscules. La RFC spécifie en fait qu'en théorie TRUC est différent de truc mais qu'en fait, (quasiment?) tous les serveurs d'e-mail passent les adresses en minuscules, d'où l'équivalence effective.
Et de ce fait, un bon valideur (je devrais dire filtre) doit, justement, soit passer l'adresse donnée en minuscules avant test, soit tenir compte des majuscules dans la RE: je ne suis pas tête en l'air, mais j'aime bien taper PhiLho@QuelquePart.com (adresse fictive, bien sûr). Et je suis agacé quand un soit-disant valideur JavaScript la rejette ! :-)

Et ma remarque sur les tests portait sur le petit bout de code JavaScript que tu donnes en exemple :
var rgxp = /^[a-z0-9!#$%&'*+/=?^[etc.]
Le / au milieu termine l'expression. Il faut soit utiliser \/ soit new RegEx()

Oh, et je n'ai pas mentionné la RFC 822, c'est juste l'URL d'une expression régulière fort connue. J'avoue que je n'ai pas étudié la différence entre 822 et 2822, mais je doute que le format des e-mails ait beaucoup changé entre les deux... :-)

Cordialement.

signaler à un administrateur
Commentaire de pifol le 25/04/2009 16:50:14

vrai, on a droit aux majuscules.
Maintenant, pourquoi les filtres de validation d'emails ou d'urls polluent toujours les topics sur les regex ??? quand on voit ce truc (de soit-disant 6600 chars (= +6Mo :/)) remplit de parenthèses non capturante et d'aucune référence arrière ni de condition, bref du brainfuck pour les nains, on se demande pourquoi les gens passent leur temps à réinventer la roue (sûrement déjà fait depuis les années 50 (= regexs))...
Tiens: zut ta regex ne gère pas tout l'unicode ! seulement l'ascii... c'est bête: elle ne sera pas utile aux deux autres tiers de la planète. Les urls, c'est pareil: on a maintenant droit aux accents, mandarin... !!!

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 4,243 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.