Verificateur du format de l'email


Description

Je n'ai pas vérifier si qq1 avait déja déposé une source qui fait ca mais bon j'en ai fait une vite fait pour mon ami VBEdit :)

La fonction renvoi vrai si l'email est valide sinon faux.

!!! REMARQUE:

!!! Et pour les petits malins qui vont me sortir: "oui y a RegExp(....)" je ne pense pas qu'il soit trés modulable dans le manière de coder et qu'il n'ont rien a foutre ici car j'ai autre chose a foutre que leur expliquer que si je sort un code aussi long c pour ca portabilité et non pour son optimisation !!!

!!! De plus par rapport à la rapidité : comme excuse c'est un peu merdique.
Je ne pense pas qu'a l'oeil nu pour une simple vérification d'email dans un formulaire, on voit rééllement la différence. !!!

Donc pour les newbees qui viennent juste pour sortir leurs nouvelle lecons de javascript avec leurs nouvelles fonctions: je dis TG.

Et pour ce qui concerne la norme W3C allez vous plaindre à microsoft, netscape, et mac qui n'ont pas l'air d'avoir le même point de vue à se sujet !

Pensez du jour: "Derrière un code qui semblerait obsolete peut se cacher un très grand développeur... mais derrière un code optimisé, peut se cacher aussi une grosse merde...
On n'a pas toujours le choix dans le developpement de ses applications...
Donc réflechir à 2 fois avant de sortir des commentaires."

Source / Exemple :


/**** 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 ****/

Conclusion :


Cette fonction peut aussi ce mettre dans Flash 5 et Flash 6 (en action script)

appel :

if(verifEmail("account@domain.com")) {
alert("mail ok");
} else {
alert("mail error");
}

Dans le zip un page de test disponible pour les comparatifs du code de samgoa et du mien.
le 1er c le mien le 2eme c le sien.
Bon travail samgoa :)

Codes Sources

A voir également

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.