Page 1 sur 1

[Résolu] Validation e-mail sous jQuery Validate

Publié : 23 févr. 2009, 00:02
par Ymai
Bonjour
Je suis un peu étonné de découvrir que le plugin "validate" (http://bassistance.de/jquery-plugins/jq ... alidation/) de jQuery laisse passer comme valide des adresses du type
username@foo_bar.net
Il me semble que le caractère "underscore" n'est pas autorisé dans un nom de domaine.
En tous les cas, la fonction "filter_var" de PHP (http://fr.php.net/filter_var) avec le filtre "FILTER_VALIDATE_EMAIL" n'admet pas le caractère "underscore" (c'est ce qui m'a mis la puce à l'oreille).
Dans validate.jquery.js, la syntaxe du validateur est

Code : Tout sélectionner

return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
dans laquelle j'avoue honnêtement n'y voir pas très clair.
Quelqu'un aurait une petite idée de ce qui doit y être modifié pour refuser le caractère "underscore" dans le nom de domaine?
Merci pour toute réponse.

Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.04 (hardy) Firefox/3.0.6

Publié : 23 févr. 2009, 08:50
par Benoit
En fait le caractère est tout à fait valide, mais il parait que certaines implémentations de DNS ne l'accepteront pas.

Je pense que si tu désires le supprimer c'est simplement en l'enlevant dans la partie

Code : Tout sélectionner

([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])
pour donner

Code : Tout sélectionner

([a-z]|\d|-|\.|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])
Bien sûr, la vraie expression à utiliser est celle-ci :
http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html

Re: Validation e-mail sous jQuery Validate

Publié : 23 févr. 2009, 08:55
par calimo
Ymai a écrit :Il me semble que le caractère "underscore" n'est pas autorisé dans un nom de domaine.
Tes soupçons sont confirmés par wikipédia : http://en.wikipedia.org/wiki/Domain_name#Defined

Il y a deux fois La barre verticale veut dire "ou". En supprimant cela, tu devrais les empêcher (mais gare aux effets de bord avec une telle expression !)

Edit: un bout de citation pas citée et supprimée :oops:

Publié : 23 févr. 2009, 12:04
par Ymai
Un tout grand merci pour les réponses.
J'essaierai de comprendre l'expression rationnelle un peu plus tard :D

Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.04 (hardy) Firefox/3.0.6