REGEXP POUR VÉRIFIER LA VALIDITÉ D'UNE ADRESSE MAIL SUIVANT NORME RFC822

momoxe Messages postés 71 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 12 août 2006 - 21 mai 2006 à 15:18
cs_janhsh Messages postés 31 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 janvier 2015 - 15 mai 2009 à 20:50
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37691-regexp-pour-verifier-la-validite-d-une-adresse-mail-suivant-norme-rfc822

cs_janhsh Messages postés 31 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 janvier 2015
15 mai 2009 à 20:50
Pour ceux que ça intéresse, voici un site sur lequel on présente une regexp similaire ....
http://www.expreg.com/expreg_article.php?art=verifmail
voir en fin de page...
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
2 août 2006 à 09:57
heu... lol.. j'ai un peu honte la ^^ merci pour le lien :p
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
1 août 2006 à 15:02
Bah euh PCRE (je dis une bêtise ?)
http://www.pcre.org/
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
1 août 2006 à 14:56
ah au fait je pose la question au cas ou : je me suis remy au C++ depuis peu (disons que j'avais pas eu de projets depuis quelques temps) et lors d'un traitement d'une fonction particuliere, j'ai commence a ercire justement une expression reguliere jusqu'au moment ou j'ai appelle preg_match() et que mon compilo a pas ete super d'accord ... ^^
Vous savez si il existe des lib(sdk) utilisant les regex de type pcre pour le C++ ?? j'ai essaye de faire mon moteur mais j'ai mechament galerer... j'en suis encore loin, voir meme tres loin ...

si quelqu'un avait des infos la dessus, je prend !! Merci et @++
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
1 août 2006 à 14:52
Imaginez un peu si on s'amusait a faire un benchmark sur cette fonction ?? on fait 1000 tour de boucle avec l'adresse #+^-$`&%_=|/|_?=!§{}@#+^-$`&%_=|/|_?=!§{}.com et on regarde le temps que renvoi microtime().... lol... sa serait un truc du genre "Fatal error: Maximum execution time of 30 seconds exceeded ..." ^^ sa peut etre bien fun !!

Et sous IIS .. je n'ose y penser .. peut etre une nouvelle faille ?? lol.. allez j'arrete

@++
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
1 août 2006 à 14:20
Faudrait envoyer cette regex à Philippe Hazel (ndlr: le fou furieux qui développe pcre), je suis persuadé qu'il s'en chopperait une crise cardiaque bien avant que le serv ait fini de tourner en effet :p
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 août 2006 à 13:29
Lol en effet, y en a qui psychotent grave là ;-)
Aucun risque avec ce code. Si ce n'est de tuer le serveur PHP à la tâche pour executer ce truc ;-)
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
1 août 2006 à 12:08
Faut arrêter de craquer lol..
Je sais pas si ce truc est vraiment rfc compliant, si ca marche bien, mais essayez tout de même de pas avoir le nez collé à l'écran hein..
1 preg_match, 1 chaine entre simple quotes, 2 echo()... Y'a pas de quoi se cacher sous la table si ?
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
1 août 2006 à 11:21
C'est vrai que vu la taille du truc, on peut se poser la question a savoir si il y a pas une backdoor dedans ... ^^ non je deconne faut pas psycoter, sa reste du php dans une expression reguliere.. au pire sa envoi un mail quelque part mais c'est tout.... pour verifier t'as qu'a la mettre dans un editeur genre dreamweaver (que je recommande ^^) ou context (tres bien egalement) et tu regarde la couleur que prend le texte. Si tout n'est pas en rouge (ou de la couleur d'un string normal), c'est qu'il y a probleme... mais j'en doute ... :p

En fait je suis plus de l'avis de coockiesch, je suis persuade que sa cache un dessin en ASCII ... ^^

@++
pepecyril Messages postés 3 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juillet 2006
29 juil. 2006 à 17:23
Euhh, ça me laisse perplexe. Il a été testé ce code ? Car moi j'ai pas confiance en une expression pareille
TheSin Messages postés 331 Date d'inscription mardi 12 novembre 2002 Statut Membre Dernière intervention 10 février 2009
3 juil. 2006 à 11:42
La traduction étant trouvable ici :
http://abcdrfc.free.fr/rfc-vf/rtf/rfc2822.rtf
pastis51forever Messages postés 172 Date d'inscription dimanche 29 juin 2003 Statut Membre Dernière intervention 8 septembre 2006 1
3 juil. 2006 à 10:43
J'dis ptetre une connerie, mais je viens de voir dans le descriptif de la rfc822 ceici:
MSG - Le Format des Messages de l'Internet
"La spécification du format des messages, utilisé par exemple pour interpréter le contenu d'un e-mail. Cette RFC est obsolète, remplacée par la RFC 2822 dont une traduction en Français est disponible."
J'espère qu'ils n'ont rien mofidié en ce qui concerne les adresses e-mail... En tout cas, bon courrage pour la faire évoluer ton expression...
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
30 mai 2006 à 18:17
PS : et puis c'est vrai qu'a developper, sa doit pas etre de tout repos ce genre de code ... lol ... et je ne pense meme pas a la maintenance ... :p :p
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
30 mai 2006 à 18:15
lol... je crois que le tour de la question a ete fait, je suis d'accord avec tout le monde ici present, l'intention est certe louable mais beaucoup trop lourde a deployer ... et puis, d'un point de vue plus personnel, les regex c'est super utile quand on veut faire une verification draconienne (pas sur de l'orthographe la ... :p ) en ecrivant relativement peut, c'est ce qui m'a pousse a apprendre les regex. Et puis les rfc c'est sympa, mais sa reste quand meme dans la pratique des projets en developpement constant, donc mieux vaut se fier a ses besoins reels.

Exemple : moi sur mon site je n'accepte pas les adresse genres #+^-$`&%_=|/|_?=!§{}@mail.com tout simplement parce qu'elles ne sont pas accepte sur les autres sites -cf Frankie-. C'est contraignant mais pour esperer (on est jamais sur) avoir une bonne adresse, faut suivre le mouvement (malheureusement .. )

@++ et bon coding !!
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
28 mai 2006 à 22:09
C'est pas le genre de code qui, quand on le met dans un notepad aux bonnes dimensions, représente une tête de Mickey? :-D

Trop bourrin pour moi, j'en reste à ma regexp de base! :)

@++

R@f
frankie_73 Messages postés 4 Date d'inscription samedi 29 avril 2006 Statut Membre Dernière intervention 24 mai 2006
22 mai 2006 à 16:14
J'ai essayé de m'ouvrir un compte hotmail #+^-$`&%_=|/|_?=!§{}@hotmail.com pour voir, mais ca n'a pas marché ça dit:
"Les adresses de messagerie doivent commencer par une lettre. Elles ne peuvent contenir que des lettres, des chiffres, des points (.), des tirets (-) et des traits de soulignement (_). Tapez une autre adresse de messagerie."
je suis vraiment désolé, j'aurais vraiment aimé avoir #+^-$`&%_=|/|_?=!§{}@hotmail.com comme adresse personelle...
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
22 mai 2006 à 11:00
Je me range à l'avis d'Antho : l'intention est louable, de vouloir se rapprocher de la RFC, mais en pratique...ce n'est pas une bonne idée, pour les raisons qu'il cite.

Bon après, je ne vais pas me pencher sur ton expression, mais j'ai dans l'idée que tu t'y es mal pris. Il me parait curieux que tu aies besoin de tout ça pour écrire ton motif, il y a bcp de redondances, à l'oeil nu (au microscope chais pas...).
TheSin Messages postés 331 Date d'inscription mardi 12 novembre 2002 Statut Membre Dernière intervention 10 février 2009
22 mai 2006 à 09:25
moi ce que j'aime bien dans l'expression c'est tout les \\t \\r et \\n alors qu'un simple flag aurait suffit, et paf ça fait déjà des caractères en moins ;-)
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
22 mai 2006 à 09:03
Oups, je n'avais pas lu ton comment jusqu'au bout :p si ce code n'est pas de toi pas grave, j'vais quand même essayer de l'améliorer pour voir..
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
22 mai 2006 à 08:53
La regex est épouvantable je trouve aussi..
J'vois les mêmes assertions répétées au moins 15 fois dedans.. les échappements me paraissent hyper lourds, je ne sais pas quelle version de preg_* correspond à quelle version de la bibliothèque PCRE, mais sur certains passages, autant utilise \Q ... \E (et de toute facon y'a des backslashes inutiles à priori)
Les imbrications de parenthèses sont assez moches, j'suis persuadé que ca peut se faire plus simplement, faudrait que je regarde cette RFC pour essayer de pondre un truc plus petit et qu'on compare :D
T'as du bien te prendre la tête pour écrire ca :D
steve6000 Messages postés 61 Date d'inscription vendredi 22 août 2003 Statut Membre Dernière intervention 23 septembre 2006
22 mai 2006 à 01:12
fiouf =]

function mailcheck($mail) {
$atom = '[-a-z0-9!#$%&\'*+/=?^_`{|}~]';
$domain = '([a-z]([-a-z0-9]*[a-z0-9]+)?)';
$regex = '^'.$atom.'+'.'(\.'.$atom.'+)*'.'@'.'('.$domain .'{1,63}\.)+'.$domain.'{2,63}$';
if (eregi($regex, $mail)) { return true; }
else { return false; }
}
themioux Messages postés 45 Date d'inscription dimanche 29 mai 2005 Statut Membre Dernière intervention 14 avril 2011
21 mai 2006 à 17:23
Eh ben, ca c'est de l'expression régulière... Moi qui suis fâchée avec elles...

En tout cas, cette source est toujours utile pour qui veut vérifier une adresse email aux normes

(tiens je vais m'ouvrir #+^-$`&%_=|/|_?=!§{}@mail.com :D)
cs_janhsh Messages postés 31 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 janvier 2015
21 mai 2006 à 15:42
Je sais, d'un point de vue écriture, c'est épouvantable?

Apparemment,l'exécution est très rapide (voir fichier exemple) mais je n'ai pas vraiment eu l'occasion de l'utiliser ni de faire des tests approfondis.

@+
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
21 mai 2006 à 15:32
Question simple : à quoi ça sert concrètement ? Parce que la protection absolue n'existe pas. Autant faire une vérification simple qui ne bouffera pas tout le temps processeur au moindre appel de la page. N'importe qui pourra de toute façon entrer n'importe quel mail bidon (ou qui deviendra bidon).

aaaaaa@bbbbb.fr et hop fini... si t'envoies une confirmation par mail bah pas de problème tu crées un mail sur jetable.org et hop au bout de X heures l'alias saute ce qui fait que le mail devient bidon... bref de toute façon on pourra toujours trouver une parade à ce genre de trucs.
momoxe Messages postés 71 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 12 août 2006
21 mai 2006 à 15:18
Euh...
Comment dire?
Ca doit être assez lourd pour le serveur tout de même non?
@+
Rejoignez-nous