Jquery值匹配正则表达式

Dep*_*ify 51 javascript regex jquery match

我试图通过JQuery验证电子邮件的输入:

我的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>
Run Code Online (Sandbox Code Playgroud)

即使我输入了example@example.com,也不会发出警报.我已经尝试过.test()和.match(),我做错了什么?

Aru*_*hny 77

  • 将字符串传递给RegExp或使用//语法创建正则表达式
  • 打电话regex.test(string),不是string.test(regex)

所以

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');
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用`this.value`而不是`$(this).val()`. (4认同)
  • 考虑到这将不接受lowecase字母. (3认同)

Sea*_*ght 12

把它改成这个:

var email = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
Run Code Online (Sandbox Code Playgroud)

这是一个传递i标志的正则表达式文字,表示不区分大小写.

请记住,电子邮件地址验证很难(掌握正则表达式结束时有4或5页正则表达式证明这一点)并且您的表达式肯定不会捕获所有有效的电子邮件地址.