[R] Validation adresse mail type RFC 2822

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
benjahinfo
Niveau 3
Niveau 3
Messages : 43
Enregistré le : mar. 08 nov. 2011 11:05
Status : Hors ligne

[R] Validation adresse mail type RFC 2822

#1

Message 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 ?
Modifié en dernier par benjahinfo le mar. 21 août 2012 00:12, modifié 2 fois.
Avatar du membre
Uranium
Niveau 5
Niveau 5
Messages : 143
Enregistré le : mer. 28 mars 2012 13:13
Status : Hors ligne

Re: [..] Validation adresse mail type RFC 2822

#2

Message par Uranium »

Du pattern comme mikell les aimes :P

Sinon je vois pas pourquoi tu ne pourrais pas avec ce pattern :wink:

PS : Tlem et pas Thlem :wink:

Cordialement,
« En mathématiques, “évident” est le mot le plus dangereux. »
Avatar du membre
benjahinfo
Niveau 3
Niveau 3
Messages : 43
Enregistré le : mar. 08 nov. 2011 11:05
Status : Hors ligne

Re: [..] Validation adresse mail type RFC 2822

#3

Message par benjahinfo »

Merci. :mrgreen:

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.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Validation adresse mail type RFC 2822

#4

Message 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
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
benjahinfo
Niveau 3
Niveau 3
Messages : 43
Enregistré le : mar. 08 nov. 2011 11:05
Status : Hors ligne

Re: [R] Validation adresse mail type RFC 2822

#5

Message 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.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Validation adresse mail type RFC 2822

#6

Message par Tlem »

Ben essayez là. :lol:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
benjahinfo
Niveau 3
Niveau 3
Messages : 43
Enregistré le : mar. 08 nov. 2011 11:05
Status : Hors ligne

Re: [..] Validation adresse mail type RFC 2822

#7

Message 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 ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Validation adresse mail type RFC 2822

#8

Message 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)>)$
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Validation adresse mail type RFC 2822

#9

Message 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])?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
benjahinfo
Niveau 3
Niveau 3
Messages : 43
Enregistré le : mar. 08 nov. 2011 11:05
Status : Hors ligne

Re: [R] Validation adresse mail type RFC 2822

#10

Message 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
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Validation adresse mail type RFC 2822

#11

Message 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"
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre