Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 31 juil. 2009 à 10:36
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
pifol
Messages postés23Date d'inscriptionmercredi 14 novembre 2007StatutMembreDernière intervention26 avril 2009 25 avril 2009 à 16:50
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... !!!
PhiLho
Messages postés4Date d'inscriptionmardi 4 janvier 2005StatutMembreDernière intervention12 novembre 2008 12 nov. 2008 à 08:16
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.
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 11 nov. 2008 à 19:46
@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 :
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.
PhiLho
Messages postés4Date d'inscriptionmardi 4 janvier 2005StatutMembreDernière intervention12 novembre 2008 30 sept. 2008 à 22:32
Ç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 ! :-)
31 juil. 2009 à 10:36
^[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
25 avril 2009 à 16:50
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... !!!
12 nov. 2008 à 08:16
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.
11 nov. 2008 à 19:46
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.
30 sept. 2008 à 22:32
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 ! :-)