Подтвердить что ты не робот

Значение Jquery Value Regex

Я пытаюсь проверить вход для E-Mail через JQuery:

Мой JQuery

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

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

Это не будет отображаться, даже если я набрал [email protected] Я уже пробовал .test() и .match(), что я сделал неправильно?

4b9b3361

Ответ 1

  • Передайте строку в RegExp или создайте регулярное выражение с помощью синтаксиса //
  • Вызов regex.test(string), а не string.test(regex)

Итак,

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

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

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

Ответ 2

Измените его так:

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

Это литерал регулярного выражения, которому передается флаг i, что означает нечувствительность к регистру.

Имейте в виду, что проверка адреса электронной почты жесткая (есть регулярное выражение из 4 или 5 страниц в конце Mastering Regular Expressions, демонстрирующее это), и ваше выражение, конечно же, не будет фиксировать все действительные e- адреса электронной почты.