VÉRIFICATION DE LA SYNTAXE D'UN COURRIEL (EMAIL) PAR EXPRESSIONS RÉGULIÈRES.

cs_Mimata Messages postés 7 Date d'inscription vendredi 31 octobre 2003 Statut Membre Dernière intervention 24 octobre 2006 - 19 janv. 2006 à 23:38
sacapuss2 Messages postés 27 Date d'inscription mardi 9 août 2011 Statut Membre Dernière intervention 21 mai 2020 - 9 août 2011 à 06:36
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/35656-verification-de-la-syntaxe-d-un-courriel-email-par-expressions-regulieres

sacapuss2 Messages postés 27 Date d'inscription mardi 9 août 2011 Statut Membre Dernière intervention 21 mai 2020
9 août 2011 à 06:36
Bonjour !

j'ai écrit trois fonctions javascript, pour vérifier l'intégrité d'un formulaire de mailage; Je voudrais les soumettre à votre esprit critique. Les voici :

/* object.isokform.js */

Object.prototype.isokform=function()
{
var i,element,name,value,intitule,retour,feedback,exclus,isokmail,isokform
var form=this

for(i in form.elements) if(form.elements[i].getAttribute)
{
element=form.elements[i]
name=element.getAttribute('formelement')
value=element.value=element.value.trimer()
intitule=element.getAttribute('intitule')
retour=feedback=false

if(!value) retour=intitule.veuillez('indiquer')

else if( name.match(new RegExp('nom$')))
{ exclus=value.match(new RegExp('[^a-z àâáãäåæ éèêë îïìí òóôõöøœ ùûüú ÿý çþÞßðñ \'-]','ig')); if(exclus) feedback=intitule.nepeutcontenir(exclus) }

else if(name.match(new RegExp('mail$'))) { isokmail=value.isokmail(intitule); if(typeof isokmail=='string') feedback=isokmail }

if(feedback) retour=feedback+intitule.veuillez('corriger')
if(retour) return retour
}

return true
}

/* string.isokmail.js */

String.prototype.isokmail=function(intitule)
{
var chaine=this

if(chaine.indexOf(aro)<0) return intitule.doitcomporter(une+arobase)
if(chaine.indexOf(aro)!=chaine.lastIndexOf(aro)) return intitule.doitcomporter(une+seule+arobase)
if(chaine.indexOf(space)>=0) return (le+caractere+'espace'.taguer('em')+'ne peut pas figurer'+dans+intitule).phrataguer('espace')

for(n=0; n<2; n++) { var isokmailpart=chaine.isokmailpart(n); if(typeof isokmailpart=='string') return isokmailpart }

return true
}

/* string.isokmail.js */

String.prototype.isokmail=function(intitule)
{
var chaine=this

if(chaine.indexOf(aro)<0) return intitule.doitcomporter(une+arobase)
if(chaine.indexOf(aro)!=chaine.lastIndexOf(aro)) return intitule.doitcomporter(une+seule+arobase)
if(chaine.indexOf(space)>=0) return (le+caractere+'espace'.taguer('em')+'ne peut pas figurer'+dans+intitule).phrataguer('espace')

for(n=0; n<2; n++) { var isokmailpart=chaine.isokmailpart(n); if(typeof isokmailpart=='string') return isokmailpart }

return true
}

Qu'en pensez-vous ???
cs_sivispacem Messages postés 26 Date d'inscription vendredi 26 avril 2002 Statut Membre Dernière intervention 4 octobre 2006
4 oct. 2006 à 16:48
Réponse à guinnessboy :
il faut changer <form> par <form method="post" action="traitementformulaire.php">.
Voir à la fin de verifier(f)... le f.submit() qui executera...
if(confirm("Merci "+f.nom.value+".\n\nVotre demande a été envoyée.")) f.submit();
Mais c'est un peu en dehors du sujet.
guinnessboy Messages postés 7 Date d'inscription dimanche 24 juillet 2005 Statut Membre Dernière intervention 8 novembre 2006
4 oct. 2006 à 14:01
Bonjour, ce script de vérification est assez complet. J'ai cependant une question : je souhaiterai lors de la validation exécuter un fichier php qui traite les informations contenues dans le formulaire.
En fait faire la même chose qu'avec l'attribut 'action' d'un <form> lorsque que l'on utilise un bonton de type submit.
Ou dois je modifier le code ?
Merci,
cs_sivispacem Messages postés 26 Date d'inscription vendredi 26 avril 2002 Statut Membre Dernière intervention 4 octobre 2006
22 janv. 2006 à 13:55
coucou747,
Vrai ta remarque, c'est pour cela que j'en
parle en premier dans la description.
C'est la fonction bSyntaxeEmail(sMail), qui mérite
d'être encore travaillée pour la conformité avec les RFC.
En Option, la fonction bDomainTLD(sMail)
pour les TLD, le reste c'est pour le décor !
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
22 janv. 2006 à 11:14
pour une synthaxe d'un mail, une seule expression régulmière suffit ! t'es pas oblié de faire autant de lignes de codes...
cs_sivispacem Messages postés 26 Date d'inscription vendredi 26 avril 2002 Statut Membre Dernière intervention 4 octobre 2006
20 janv. 2006 à 00:13
Mimata
Vrai les
et les validations, mais c'est du html simple...
Sans entête inutiles ici (javascript)
Le form le fait rien <form>...</form> juste pour montrer
que je n'utilise pas son nom. Je passe les variables au script.
Evidemment il faudra action="Script de traitement" et method="post ou get"
et un formulaire à composer soi-même...
Donc je rajoute pour les puristes.
cs_Mimata Messages postés 7 Date d'inscription vendredi 31 octobre 2003 Statut Membre Dernière intervention 24 octobre 2006
19 janv. 2006 à 23:38
Formidable !!! Bravo Sivispacem pour ce script aussi limpide qu'efficace.


Deux petites précisions toutefois sur cette source :

- N'oubliez pas d'enlever les retours chariots de la ligne # var re=/^(ac|ad|ae|...|com|coop|edu|eu|gov|info|int|mil|museum|name|net|org|pro|jobs|travel)$/gi;

- Le script est valide en XHTML 1.0 Strict, à condition de bien fermer les balises. Changez les deux balises :
Votre courriel et
Message en
, ainsi qu'en remplaçant la balise <html> par <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

Pour voir ce script en action : http://xhtml.css.free.fr/contact.htm (si vous le testez, soyez gentils d'annuler au moment de l'envoi...) Par ailleurs, je n'ai rien à vous apprendre sur ce point, c'est Sivispacem l'expert, pas moi).

Cette source va faire des heureux, moi le premier.
Rejoignez-nous