Billet du sideblogue

Valider un courriel

L’article I Knew How To Validate An Email Address Until I Read The RFC nous indique que la plupart des expressions régulières utilisées pour valider des adresses de courrier électronique sont trop strictes ! En effet, selon la RFC 2822, ces courriels sont parfaitement valides :

  • "Abc\@def"@example.com
  • "Fred Bloggs"@example.com
  • "Joe\\Blow"@example.com
  • "Abc@def"@example.com
  • customer/department=shipping@example.com
  • $A12345@example.com
  • !def!xyz%abc@example.com
  • _somename@example.com

Pensez-y la prochaine fois que vous aurez à bâtir un système de validation !

Posté le avec les tags: et .

Commentaires fermés

Les commentaires pour ce billet ont été désactivés un mois après la date de publication de ce-dernier. Vous désirez exprimer votre opinion sur ce billet malgré le fait que les commentaires aient été désactivés ? Utilisez le formulaire de contact.


Fil atom des commentaires de ce billet6 commentaires

  • Pour ceux que ça intéresse, voici le regex exact pour la norme RFC2822.

    D’un autre côté, les FAI et les fournisseurs d’adresses email sont plus stricts, donc il est très peu probable de tomber sur une adresse du type demain matin!

    David Brisebois (22 août 2007 à 12:29 EST)

  • D’un autre côté, les FAI et les fournisseurs d’adresses email sont plus stricts, donc il est très peu probable de tomber sur une adresse du type demain matin!

    En effet, c’est peu probable. Sauf qu’il y a probablement des geeks avec leur propres serveurs mail qui possèdent des adresses similaires ;-)

    Rémi Prévost (22 août 2007 à 13:01 EST)

  • Voici l’expression régulière officiel pour ceux qui n’aiment pas les RFC :)

    (?:[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])+)\])
    

    Désolé Rémi de briser ton design.

    Benjamin (22 août 2007 à 17:05 EST)

  • assez intense comme regex :)

    Pierre-Luc Babin (22 août 2007 à 21:07 EST)

  • Désolé Rémi de briser ton design.

    Si tu avais mis une « tab » en avant de ta ligne au lieu d’utiliser une citation, ça ne l’aurait pas brisé ;)

    (Je l’ai corrigé!)

    Rémi Prévost (23 août 2007 à 8:01 EST)

  • La regexp postée par Benjamin mérite d’être utilisée dans un (faux) examen de programmation papier…

    « Les adresses de courriels suivantes sont elles valides selon cette expression régulière? »

    Mouahahhaha.

    Olivier G. (23 août 2007 à 23:10 EST)