Jquery-waarde komt overeen met Regex

Ik probeer de invoer voor e-mail via JQuery te valideren:

Mijn 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>

Dit wordt niet gewaarschuwd, ook al heb ik [email protected] ingevoerd.
Ik heb .test() en .match() al geprobeerd, wat heb ik verkeerd gedaan?


Antwoord 1, autoriteit 100%

  • Geef een tekenreeks door aan RegExp of maak een regex met behulp van de //-syntaxis
  • Bel regex.test(string)aan, niet string.test(regex)

Dus

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');
        }
    });
});

Antwoord 2, autoriteit 14%

Verander het in dit:

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

Dit is een letterlijke reguliere expressie die de vlag idoorgeeft, wat betekent dat deze niet hoofdlettergevoelig is.

Houd er rekening mee dat validatie van e-mailadressen moeilijkis (er is een reguliere expressie van 4 of 5 pagina’s aan het einde van Mastering Regular Expressions die dit aantoont) en uw expressie zal zeker niet alle geldige e- e-mailadressen.

Other episodes