Partage
  • Partager sur Facebook
  • Partager sur Twitter

Validation Email formulaire

Sujet résolu
    1 décembre 2010 à 12:36:33

    Bonjour,

    J'ai un petit soucis avec ma regex pour valider les emails :
    var mail = "toto@toto.fr";
    var reg = "/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/i";
    if(mail.match(reg)) {
    	alert("valide !!!");
    } else {
    	alert("pas valide");
    }
    


    Il affiche toujours : "pas valide"...

    PS: Je ne dois pas mettre ^ et $ car ma string pourra comporter des sauts de lignes, des virgules ou point virgule (et donc plusieurs mails).

    Quelqu'un aurait une idée ?
    • Partager sur Facebook
    • Partager sur Twitter
      1 décembre 2010 à 12:42:09

      Pourquoi ta regexp est-elle entre guillemets ?

      EDIT : De plus, utiliser reg.test(mail) serait ici plus approprié.
      • Partager sur Facebook
      • Partager sur Twitter
        1 décembre 2010 à 12:53:13

        Merci c'était bien ça ! je croyais qu'il fallait passer par des string...

        Voilà la réponse :
        var mail = "toto@toto.fr";
        var reg = new RegExp(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/i);		
        if(reg.test(mail)) {
        	alert("valide !!!");
        } else {
        	alert("pas valide " + mail.match(reg));
        }
        


        Petite question à quoi sert RegExp ?
        car
        var reg = new RegExp(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/i);
        et
        var reg = /[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/i;
        font la même chose...

        Comment fais t-on pour créer un regex à partir d'une string ?
        (car var reg = new RegExp("[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}", "i"); ne fonctionne pas...)
        • Partager sur Facebook
        • Partager sur Twitter
          1 décembre 2010 à 13:24:27

          Dans ton cas, le new RegExp ne sert effectivement à rien, puisque tu utilises déjà la notation littérale des regexps avec //

          Pour crée une regexp à partir d'une string, il faut faire comme tu as fait, mais en échappant les antislashes :

          var reg = new RegExp("[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}", "i");
          


          Néanmoins, la notation littérale est toujours à privilégier, à moins que ta regexp ne se base sur des variables.
          • Partager sur Facebook
          • Partager sur Twitter
            1 décembre 2010 à 14:32:59

            C'est vrai, les antislashes :(

            Merci pour ton aide et tes explications...
            ça faisait longtemps que j'avais pas touché aux Regex sous Javascript ^^
            • Partager sur Facebook
            • Partager sur Twitter

            Validation Email formulaire

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown