Soyez le premier à donner votre avis sur cette source.
Vue 16 550 fois - Téléchargée 496 fois
/**** Début de fonction : verifEmail ****/ // Entrée : mail - (String) - Email à analysé. // Renvoyé : true ou false - (Boolean) - Vrai si l'email est correct sinon Faux function verifEmail(mail) { /*** Début de déclaration de variable ***/ //var de retour boolean true ou false var ret = true; //var où l'on stock le caractère courant au fur et a mesure de l'analyse var car = ""; //var où l'on stock le caractère place avant le @ var carAfter = ""; //var où l'on stock le caractère place après le @ var carBefore = ""; //var où l'on stock le nombre de caractères total var nbrcar = mail.length; //var où l'on stock le nombre de @ trouvé var nbrarobase = 0; //var où l'on stock le nombre de . trouvé var nbrpoint = 0; //var définissant les caractères authorisés var goodcar = "@0123456789.-_abcdefghijklmnopqrstuvwxyz"; /*** Fin de déclaration de variable ***/ /*** Début de boucle de l'analyse ***/ for(cnt=0;cnt<nbrcar;cnt++) { //Récupération du caractère courant var car = mail.substr(cnt,1); /** Début de l'analyse du caractère courant **/ //Si le caractère est authorisé if(goodcar.indexOf(car) >= 0) { //On initialise les variables carAfter et carBefore à vide carAfter = ""; carBefore = ""; /* Début de l'analyse du @ */ //Si le caractère est @ if(car == "@") { //Si le @ n'est pas le premier if((cnt-1) >= 0) { //Récupération du caractère placé avant le @ carBefore = mail.substr((cnt-1),1); } //Si le @ n'est pas le dernier if((cnt+1)<nbrcar) { //Récupération du caractère placé après le @ carAfter = mail.substr((cnt+1),1); } //Si toutes les condition de @ sont respectées //conditions: // - cnt>0 : n'est pas placé en première position // - nbrarobase==0 : est unique // - cnt<(nbrcar-4) : se trouve à une position max de 5 avant la fin // (sachant que les domaines les plus petit sont : a.fr par ex.) // - !(carBefore==".") : qu'il n'y est pas de . avant le @ // - !(carAfter==".") : qu'il n'y est pas de . après le @ // - !(carBefore=="-") : qu'il n'y est pas de - avant le @ // - !(carAfter=="-") : qu'il n'y est pas de - après le @ // - !(carBefore=="_") : qu'il n'y est pas de _ avant le @ // - !(carAfter=="_") : qu'il n'y est pas de _ après le @ if(cnt>0 && nbrarobase==0 && cnt<(nbrcar-4) && !(carBefore==".") && !(carAfter==".") && !(carBefore=="-") && !(carAfter=="-") && !(carBefore=="_") && !(carAfter=="_")) { //On incrémente le @ nbrarobase++; } else { //Affectation Faux à la var de retour ret = false; //On sort de la boucle break; } } /* Fin de l'analyse du @ */ /* Début de l'analyse du . */ //Si le caractère est . if(car == ".") { //Si le . n'est pas le premier if((cnt-1) >= 0) { //Récupération du caractère placé avant le . carBefore = mail.substr((cnt-1),1); } //Si le . n'est pas le dernier if((cnt+1)<nbrcar) { //Récupération du caractère placé après le . carAfter = mail.substr((cnt+1),1); } //Si toutes les condition de @ sont respectées //conditions: // - cnt>0 : n'est pas placé en première position // - cnt<(nbrcar-2) : se trouve à une position max de 3 avant la fin // (sachant que les domaines les plus petit sont : a.fr par ex.) // - !(carBefore==".") : qu'il n'y est pas de . avant le . // - !(carAfter==".") : qu'il n'y est pas de . après le . // - !(carBefore=="-") : qu'il n'y est pas de - avant le . // - !(carAfter=="-") : qu'il n'y est pas de - après le . // - !(carBefore=="_") : qu'il n'y est pas de _ avant le . // - !(carAfter=="_") : qu'il n'y est pas de _ après le . if(cnt>0 && cnt<(nbrcar-2) && !(carBefore==".") && !(carAfter==".") && !(carBefore=="-") && !(carAfter=="-") && !(carBefore=="_") && !(carAfter=="_")) { //On incrémente le . nbrpoint++; } else { //Affectation Faux à la var de retour ret = false; //On sort de la boucle break; } } /* Fin de l'analyse du . */ } else { //Affectation Faux à la var de retour ret = false; //On sort de la boucle break; } /*** Fin de l'analyse du caractère courant ***/ } /*** Fin de boucle de l'analyse ***/ /*** Début de l'analyse du nombre de @ et de . ***/ //Si il n'y a aucun @ et aucun . //Si le 1er et le dernier caractère est . //Si le 1er et le dernier caractère est - //Si le 1er et le dernier caractère est _ if(nbrarobase == 0 || nbrpoint == 0 || mail.substr(0,1) == "." || mail.substr(0,1) == "-" || mail.substr(0,1) == "_" || mail.substr((nbrcar-1),1) == "." || mail.substr((nbrcar-1),1) == "-" || mail.substr((nbrcar-1),1) == "_") { //Affectation Faux à la var de retour ret = false; } /*** Fin de l'analyse du nombre de . et de @ ***/ //Renvoi de la valeur de la var de retour return ret; } /**** Fin de fonction : verifEmail ****/
Commentaires
voici une méthode (pas encore finalisé) pour tester un mail via PEAR :
Bonne journée
A l'époque où j'ai posé la source les expr reg n'étaient pas vraiement au point sur tous les navigateurs.
Ceci dit maintenant ce n'est plus la cas on peut effectivement faire une bonne expr reg pour cela.
si j'ai le temps j'en poserais une. Completer ce contrôle du coté serveur peut aussi s'avérer très utile pour la validité des domaines ou IP.
Essayes d'inclure dans ta regexp ce cas la : email@10.24.134.17
Have Fun ;)
Merci pour la source, mais une petite question persiste,
Lorsque j'essaie de renseigner ce type de mail < toto@toto.nccsd >, le mail est validé, alors que jusqu'à aujourd'hui il n'est pas possible de renseigner un suffixe de plus de trois caractères.
Donc $regexp = "^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$"; (désolé) mais cela à le mérite de fonctionner.
Bonne journée
Si vraiment on veut titiller jusqu'au bout la vérif...
Je suis peut-etre bigleu mais, je n'ai pas vu dans ton code de vérification de la longueur maximale de l'email, car il me semble bien que cette longueur est limitée !
Ainsi, si je rentre une email valide mais de 5000 caracteres dans ta vérif, elle va passer, a moins encore une fois , que j'ai raté qqch lol ;)
Bravo ^^
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.