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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 27 314 fois - Téléchargée 40 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
cs_Pedrosa Messages postés 42 Date d'inscription lundi 3 juillet 2006 Statut Membre Dernière intervention 2 juin 2008
31 août 2006 à 15:37
Bonjour,
Et en VB.NET comment valide-t-on un e-mail?
Merci.
cs_sivispacem Messages postés 26 Date d'inscription vendredi 26 avril 2002 Statut Membre Dernière intervention 4 octobre 2006
19 juin 2003 à 20:04
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+
neo8310 Messages postés 2 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 4 octobre 2007
23 juil. 2002 à 11:24
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
cs_sivispacem Messages postés 26 Date d'inscription vendredi 26 avril 2002 Statut Membre Dernière intervention 4 octobre 2006
26 avril 2002 à 22:58
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.