begin process at 2010 02 09 19:46:42
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Email & URI

 > VALIDATEUR ADRESSE EMAIL (RFC 2822)

VALIDATEUR ADRESSE EMAIL (RFC 2822)


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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 :6 149

Auteur : f0xi

Ecrire un message privé
Commentaire sur cette source (5)
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-MAI L_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

 Sources du même auteur

DÉTECTION DES HEURES / HORAIRES
DÉTERMINER LA CLASSE D'UNE IPV4 (A,B,C,D,E)
Source avec Zip Source avec une capture REGEXP TESTINATOR V1.0.0.0
VALIDATEUR IPV6

 Sources de la même categorie

DÉTERMINER LA CLASSE D'UNE IPV4 (A,B,C,D,E) par f0xi
VALIDATEUR IPV6 par f0xi
VALIDATEUR IPV4 par EBArtSoft
TOUTES URL INTERNET (HTTP,FTP,MAILTO,NEWS) par fabienfs
INTERNET URL par fabienfs

 Sources en rapport avec celle ci

EXTRACTION DES ADRESSES IP par Renfield
CODE POSTAUX CANADIEN par zen69
VALIDATEUR IPV6 par f0xi
VALIDATEUR IPV4 par EBArtSoft
TOUTES URL INTERNET (HTTP,FTP,MAILTO,NEWS) par fabienfs

Commentaires et avis

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 ! :-)

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.

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.

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... !!!

Commentaire de Renfield le 31/07/2009 10:36:06 administrateur CS

on pourrait simplifier:

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

seule difference ici, j'ai choisi d'invalider le tiret - dnas l'extension du serveur.


quant a la version avec majuscules... c'est un peu inutile, il suffit de dire au moteur de regexp d'être sensible ou non a la casse

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales