begin process at 2010 03 19 15:59:50
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaînes de caratères

 > VALIDER UNE ADRESSE EMAIL AVEC REGEXP (EXPRESSIONS RÉGULIÈRES)

VALIDER UNE ADRESSE EMAIL AVEC REGEXP (EXPRESSIONS RÉGULIÈRES)


 Information sur la source

Note :
Aucune note
Catégorie :Chaînes de caratères Niveau :Débutant Date de création :05/03/2003 Date de mise à jour :05/03/2003 11:20:00 Vu :36 153

Auteur : gwpkwz

Ecrire un message privé
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

dautre modèles existent sur ce site, mais malheureusement , il ne sont pas fiables ou bogués, voici celui que j'emploie et qui fonctionne parfaitement.
Ce  script vérifie très précisément  l'adresse email : position des "." de l' "@" des extensions simples ou multiples.

Source

  • <%
  • patrn="^([a-zA-Z0-9]+(([\.\-\_]?[a-zA-Z0-9]+)+)?)\@(([a-zA-Z0-9]+[\.\-\_])+[a-zA-Z]{2,4})$"
  • strng=request.Form("mail")
  • if test(patrn,strng) = False Then
  • message="<font class=averto>Erreur : L'adresse email " & strng & " n'est pas valide !</font>"
  • function test(patrn, strng)
  • Dim regEx ' Crée la variable.
  • Set regEx = New RegExp ' Crée une expression régulière.
  • regEx.Pattern = patrn ' Définit les critères.
  • regEx.IgnoreCase = False ' Teste la casse
  • regEx.Global = True ' Définit le champ d'application.
  • test = regEx.test(strng) ' Contrôle de la chaîne
  • End Function
  • %>
<%
patrn="^([a-zA-Z0-9]+(([\.\-\_]?[a-zA-Z0-9]+)+)?)\@(([a-zA-Z0-9]+[\.\-\_])+[a-zA-Z]{2,4})$"

strng=request.Form("mail")				
if test(patrn,strng) = False Then
message="<font class=averto>Erreur : L'adresse email " & strng & " n'est pas valide !</font>" 

function test(patrn, strng) 

Dim regEx                                  ' Crée la variable.
Set regEx = New RegExp   	' Crée une expression régulière.
      regEx.Pattern = patrn   	' Définit les critères.
      regEx.IgnoreCase = False   	' Teste la casse
      regEx.Global = True   	' Définit le champ d'application.
 test = regEx.test(strng)              ' Contrôle de la chaîne
	
End Function
%>

 Conclusion

2 variables
patrn = contient l'expression régulière
strng = la chaîne à tester
ici c'est un champ de formulaire : request.Form("mail")

Puis on appelle la fonction test(patrn, strng) avec les 2 variables
cette fonction renvoie true (vrai) si la chaîne "strng" est correcte et false (faux) si elle ne l'est pas


 Sources de la même categorie

FONCTION : REMPLACER LES CARRACTÈRES ACCENTUÉS PAR LEUR ÉQUI... par promeythey
CHERCHER ET REMPLACER UN MOT DANS UN FICHIER TEXTE par roro59650
CONVERSION CARACTÈRES UTF-8 VERS FRANÇAIS par EricDD
FONCTION UCFIRST EN ASP par DesignerCreator
Source .NET (Dotnet) FONCTIONS DE VÉRIFICATION DE LA SYNTAXE D'UNE CHAINE par vladam

Commentaires et avis

Commentaire de manouxus le 22/03/2007 14:57:08

Cette chaîne ne marche pas avec les adresses mail correctes du type totopipo@chu-marseille.fr
Je l'ai modifiée en:

"^([a-zA-Z0-9]+(([\.\-\_]?[a-zA-Z0-9]+)+)?)\@(([a-zA-Z0-9\-]+[\.\-\_])+[a-zA-Z]{2,4})$"

Commentaire de hyryel le 30/04/2007 10:40:43

ton expression régulière manouxus contient des caractère inutiles qui la rende plus lourde à gérer.
En effet, les caractères dit "spéciaux" n'ont pas besoins d'être "échapé" lorsqu'ils sont entre crochet.
ton expression devient dont :
"^[a-zA-Z0-9]+(([.-_]?[a-zA-Z0-9]+)+)?)\@(([a-zA-Z0-9]+[.-_])+[a-zA-Z]{2,4})$"

et tu pourrais même utiliser les classes de caractère pour pas te prendre la tête :
"^[:alphanum:]+(([.-_]?[:alphanum:]+)+)?)\@(([:alphanum:]+[.-_])+[:alphanum:]{2,4}$"

voili voilou...

Commentaire de hyryel le 30/04/2007 10:43:08

Edit de mon post :
me suis trompé, les classes ne sont pas :alphanum: mais :alnum:

ce qui donnerait plutot :
"^[:alnum:]+(([.-_]?[:alnum:]+)+)?)\@(([:alnum:]+[.-_])+[:alnum:]{2,4}$"

c'est mieux.

Commentaire de hyryel le 30/04/2007 11:35:58

décidément, je suis pas réveillé ce matin, j'ai encore constaté une erreur dans mon expression régulière, cette fois, c la bonne, promis !!

"^[:alnum:]+(([.-_]?[:alnum:]+)+)?)\@(([:alnum:]+[.-_])+[:alpha:]{2,4}$"

Le dernier bloc n'était pas correct, c'est la classe :alpha: qu'il faut utiliser et non :alnum:.

voila

Commentaire de granghon le 26/06/2007 18:30:50

Pas d'accord avec toi du tout, il en manque encore... Tu peux te référer à cette page ci : http://www.regular-expressions.info/email.html

en particulier la section : "The Official Standard: RFC 2822" où tu as une expression régulière qui match toutes les adresses email :

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

La même en simplifiée (qui ne prends plus les "" et donc les adresses sociétaires par exemples :

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

Et avec la limitation des noms de domaines (par exemple, la tienne n'inclut pas les .museum...) :

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|gov|biz|info|name|aero|biz|info|jobs|museum)\b

Faut juste la tenir à jour mais ça n'évolue pas souvent...

Commentaire de jacghit le 05/08/2007 18:17:07

Bonjour, désolé de ma question d'ignare, mais je ne sais pas ce qui signifie <%.
Où doit-on placé ce code : c'est un script ? un fichier php ?

Commentaire de adaneels2 le 21/09/2007 12:20:12

Granhon : très bonne tes expressions régulières, merci !
Par contre, la dernière ne comprend pas les noms de domaine .eu (europe) et les pays .fr, .de, ...
Donc je conseille vivement d'utiliser la seconde.

Commentaire de adaneels2 le 21/09/2007 12:24:04

JACGHIT : question posée au mauvais endroit et pas assez de détails.
ton truc n'est pas un script (recherche google "balise html script" et tu comprendras), mais peut être du php, asp, asp.net ...

Commentaire de Bahanix le 13/09/2008 12:05:38

// Retourne true si la chaine de caractère représente une adresse e-mail
// Inclus les symboles souvent oubliés tels que le "+" dans la partie gauche du "@".
// Le mode "i" en fin rend insensible à la casse. Pensez au strtolower.
function isMail($str){
    return preg_match('/^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}$/i',$str);
}

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,156 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales