web-dev-qa-db-fra.com

Jquery Value match Regex

J'essaie de valider l'entrée pour le courrier électronique via JQuery:

Mon JQuery

<script>
/* <![CDATA[ */
  jQuery(function(){
   $( ".mail" ).keyup(function() {
   var VAL = $(this).val();
   var email = new RegExp(^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$);

   if(VAL.test(email)){
   alert('Great, you entered an E-Mail-address');
   }
   });
  });
  /* ]]> */
  </script>

Cela ne va pas alerter même si j'ai saisi [email protected]. J'ai déjà essayé .test () et .match (), qu'est-ce que j'ai mal fait?

48
JSHelp
  • Passez une chaîne à RegExp ou créez une regex en utilisant la syntaxe //
  • Appelez regex.test(string), pas string.test(regex)

Alors

jQuery(function () {
    $(".mail").keyup(function () {
        var VAL = this.value;

        var email = new RegExp('^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$');

        if (email.test(VAL)) {
            alert('Great, you entered an E-Mail-address');
        }
    });
});
75
Arun P Johny

Changez-le en ceci:

var email = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;

Il s'agit d'un littéral d'expression régulière auquel est passé le drapeau i, qui signifie ne pas être sensible à la casse.

N'oubliez pas que la validation de l'adresse e-mail est difficile (il existe une expression régulière de 4 ou 5 pages à la fin de Mastering Regular Expressions qui le démontre) et votre expression ne capturera certainement pas toutes les adresses e-mail valides.

12
Sean Bright