Validation d'un email, en quelques lignes...

Soyez le premier à donner votre avis sur cette source.

Snippet vu 26 906 fois - Téléchargée 38 fois

Contenu du snippet

Bonjour,
La journée où j'ai voulu valider une adresse email, j'ai constaté qu'il y avait bien peu de méthodes, à la fois simple et efficace de disponible. J'ai donc décidé de travailler sur une petite fonction, que je vous présente aujourd'hui :

Source / Exemple :


function ValidationEmail(email)
    set modele = New RegExp
	  modele.pattern = "^[\w_.~-]+@[\w][\w.\-]*[\w]\.[\w][\w.]*[a-zA-Z]$"
	  modele.global = true
	  ValidationEmail = modele.test(email)
  end function

Conclusion :


Je ne vous promets pas un sans faute, car il s'agit d'un premier jet! D'ailleurs, si vous constatez une quelconque faille, n'hésitez pas à m'en faire part... De plus, je suis persuadé qu'il y en a, car je n'ai pas réalisé une longue étude topologique des emails ;-)

Alors, vous avez simplement à appeler la fonction, en lui passant l'adresse à valider, en paramètre, et elle vous retrounera "True" ou "False"

En passant, n'hésitez pas à commenter si vous trouvez ça bin ou, surtout, si vous y voyez un bugg quelconque!!!
Merci!!! ;-)

A voir également

Ajouter un commentaire

Commentaires

Messages postés
43
Date d'inscription
lundi 3 juillet 2006
Statut
Membre
Dernière intervention
2 juin 2008

Bonjour,
Et en VB.NET comment valide-t-on un e-mail?
Merci.
Messages postés
26
Date d'inscription
vendredi 26 avril 2002
Statut
Membre
Dernière intervention
4 octobre 2006

neo8310 as raison.
On enlève : var M = UnEmail.value.toLowerCase();
Et on rajoute /gi; à la place de /g; pour ignorer la casse.
Cela donne
<script langage="JavaScript">
<!--
function EmailOK(UnEmail)
{
var re = /([a-z0-9]+([-_]?[a-z0-9]+)*.)*[a-z0-9]+([-_]?[a-z0-9]+)*@([a-z0-9]+([-_]?[a-z0-9]+)*.)+[a-z]{2,4}/gi;
return (UnEmail.value.match(re) == UnEmail.value);
}
//-->
</script>
Ce test est effectivement plus efficace que l'original qui laisse passer
quelques bizarreries.
a+
Messages postés
2
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
4 octobre 2007

sivispacem manque po grand chose pour éviter le toLowerCase ... il y a une motivation particulière ou c'est juste "comme ça" ? ;-)

néanmoins elle marche bien

a++ les gens
Messages postés
26
Date d'inscription
vendredi 26 avril 2002
Statut
Membre
Dernière intervention
4 octobre 2006

J'avais fait qq chose d'équivalent le 9 novembre 2001 donc je suis devancé.
Par contre, ton expression régulière laisse passer des mails du type
_@_.xxxxxxx ce qui fait plusieurs erreurs.
Voila ce que j'utilise :

Function EmailOK(UnEmail)
' expression régulière : email de type minimum : x@x.xx
'maxi : n(nx.)nx@n(nx.)xxxx
Dim re
Set re = New RegExp ' Crée l'expression réguliere.
re.Pattern = "([a-z0-9]+([-_]?[a-z0-9]+)*.)*[a-z0-9]+([-_]?[a-z0-9]+)*@([a-z0-9]+([-_]?[a-z0-9]+)*.)+[a-z]{2,4}$"
re.IgnoreCase = True ' Définit le respect de la casse.
re.Global = True ' Définit le champ d'application
EmailOK = re.test(UnEmail)
End Function

Voila pour le code ASP.

J'utilise aussi l'équivalent Javascript :

<script langage="JavaScript">
<!--
function EmailOK(UnEmail)
{
var re = /([a-z0-9]+([-_]?[a-z0-9]+)*.)*[a-z0-9]+([-_]?[a-z0-9]+)*@([a-z0-9]+([-_]?[a-z0-9]+)*.)+[a-z]{2,4}/g;
var M = UnEmail.value.toLowerCase();
return (M.match(re) == M);
}
//-->
</script>
Bix, si tu travailles en Option Explicit, faut d'abord que tu le déclares; c'est la seule chose que je vois, pcq, sans quoi, ça fonctionne très bien!
Afficher les 11 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.