Page 1 sur 1
[R] Validation adresse mail type RFC 2822
Posté : lun. 20 août 2012 22:17
par benjahinfo
Bonjour,
Parce que je dispose d'un pattern de regexp en Javascript:
Code : Tout sélectionner
/^((([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
Il serait inspiré d'ici:
http://projects.scottsplayground.com/em ... alidation/
Je voudrais savoir si la fonction de
Tlem ici présente serait parfaitement compatible actuellement ?
Re: [..] Validation adresse mail type RFC 2822
Posté : lun. 20 août 2012 22:37
par Uranium
Du pattern comme mikell les aimes
Sinon je vois pas pourquoi tu ne pourrais pas avec ce pattern
PS : Tlem et pas Thlem
Cordialement,
Re: [..] Validation adresse mail type RFC 2822
Posté : lun. 20 août 2012 23:05
par benjahinfo
Merci.
Et bien tu me dis là que je doit mettre ce pattern tel qu'il est dans ma fonction test ?
Sinon, il me faudrait une petite traduction s'il vous plaît.
Re: [..] Validation adresse mail type RFC 2822
Posté : lun. 20 août 2012 23:34
par Tlem
Si vous recherchez du pattern pour valider une adresse émail, alors vous en trouverez ici :
http://regexlib.com/Search.aspx?k=email ... =-1&ps=100
Re: [R] Validation adresse mail type RFC 2822
Posté : mar. 21 août 2012 00:11
par benjahinfo
J'ai donc finalement trouvé une solution sur mesure !
Merci ^^
Donc la fonction qui conviendrait serait finalement:
Code : Tout sélectionner
If _IsValidRFC2822Email("toto@titi.fr") Then
MsgBox(64,"", "Adresse email valide")
Else
MsgBox(16,"", "Adresse email invalide")
EndIf
Func _IsValidRFC2822Email($Email)
Return StringRegExp($Email, "^((?>[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+\x20*|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*"\x20*)*(?<angle><))?((?!\.)(?>\.?[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+)+|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*")@(((?!-)[a-zA-Z\d\-]+(?<!-)\.)+[a-zA-Z]{2,}|\[(((?(?<!\[)\.)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\\\[\]]|\\[\x01-\x7f])+)\])(?(angle)>)$")
EndFunc
Le pattern a été trouvé
ici.
J'ai une dernière question...
Le pattern que j'ai cité lors du premier post en JavaScript, puis-je l'utiliser tel-quel avec AutoIt comme dans la fonction _IsValidRFC32Email ?
If faut savoir que
mon but premier est d'obtenir exactement le même résultat dans tout les cas, qu'avec le pattern en JavaScript qui est cité plus haut.
Re: [R] Validation adresse mail type RFC 2822
Posté : mar. 21 août 2012 00:53
par Tlem
Ben essayez là.

Re: [..] Validation adresse mail type RFC 2822
Posté : mar. 21 août 2012 01:17
par benjahinfo
Bon d'accord ça ne marche pas...
Même la fonction que j'ai cité n'est pas valide !
Là je sèche...

Quel pattern en AutoIt correspond à celui du JavaScript ?
Re: [R] Validation adresse mail type RFC 2822
Posté : mar. 21 août 2012 01:31
par Tlem
Je ne suis pas du tout sur que le pattern soit correct, mais essayez comme ceci :
Code : Tout sélectionner
^((?>[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+\x20*|'((?=[\x01-\x7f])[^'\\]|\\[\x01-\x7f])*'\x20*)*(?<angle><))?((?!\.)(?>\.?[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+)+|'((?=[\x01-\x7f])[^'\\]|\\[\x01-\x7f])*')@(((?!-)[a-zA-Z\d\-]+(?<!-)\.)+[a-zA-Z]{2,}|\[(((?(?<!\[)\.)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\\\[\]]|\\[\x01-\x7f])+)\])(?(angle)>)$
Re: [R] Validation adresse mail type RFC 2822
Posté : mar. 21 août 2012 10:29
par mikell
@Tlem : les singlecotes il aurait mieux valu les mettre dans le StringRegExp pour encadrer le pattern, non ?
Une autre pour RFC 2822, trouvée
là (excellent site)
Code : Tout sélectionner
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
Re: [R] Validation adresse mail type RFC 2822
Posté : mer. 22 août 2012 21:56
par benjahinfo
@mikell: Tout d'abord merci pour le lien.
@all: Bon ok, si je comprends bien, d'après ce site qu'il n'y a pas vraiment d'expression régulière parfaite, puisque pour aller jusqu'au bout il faudrait tester les domaines en com, net, ...
Ce que ne fait pas le pattern cité en JavaScript. Il traite par contre des caractères en Unicode, mais je n'est pas besoin de le faire puisque les données seront envoyé en ANSI par AutoIt.
Donc celui de mikell devrait me convenir.
@mikell: J'ai vu aussi sur le site qu'il y aurait des différences de style selon le langage utilisé. je ne comprends pas très bien pourquoi le pattern que vous me donné est valide en AutoIt, mais pas celui en JavaScript... Explique t-il sur le site les différences de pattern selon les langages ?
Edit: Je me suis mal exprimé, pourquoi le premier pattern que j'ai donné ne marche pas avec AutoIt
Re: [R] Validation adresse mail type RFC 2822
Posté : mer. 22 août 2012 22:42
par mikell
Je ne suis pas spécialiste des langages donc ma réponse sera forcément approximative
A priori je dirais que les expressions genre
\uFFEF dont ton premier pattern est truffé correspondent à de l'unicode, et cette syntaxe est reconnue en java mais pas en pcre (qui est utilisé dans autoit)
Sur le site que je mentionnais ces infos sont sur cette page [
http://www.regular-expressions.info/unicode.html] au paragraphe "Matching a Specific Code Point"