Attention, c'est très dangereux d'utiliser des regexp de ce style pour
valider des données en entrée sur le web.
Le framework Django en a fait les frais dernièrement : avec les
backtracking dans les regexp on peut provoquer facilement des attaques
en Denial of Service. Désormais Django utilise la regexp suivante :
email_re = re.compile(
r"(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]
+)*" # dot-atom
r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\
[\001-011\013\014\016-\177])*"' # quoted-string
r')@(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+[A-Z]{2,6}\.?$',
re.IGNORECASE) # domain
Ca doit être largement suffisant pour la plupart des cas pratiques.
--
Grégoire
Le 21 oct. 09 à 18:20, Adrien Leygues a écrit :