电子邮件验证正则表达式出现错误

3

我正在尝试使用jQuery和正则表达式在客户端验证我的电子邮件地址字段,但出于某些原因,JavaScript在正则表达式中抱怨语法错误。

@((?:[\w-]+\.)*\w[\w-]{0,66})

超出

/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;

jQuery Function

$('.emailField').change(function () {

    var inputVal = $(this).val();

    var emailReg = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;

    if (!emailReg.test(inputVal)) {

        $(this).after('<span class="error error-keyup-7">Invalid Email Format.</span>');
    }

});

enter image description here


1
奇怪,我的端口运行良好。 - DigitalDouble
你从哪里获取了那个正则表达式?它可能对于这个列表中的大多数域名都不起作用:http://www.newtldlist.com/ - Greg Hewgill
@toxic 脚本标签可以。<script> 也可以。不需要额外的库。 - Drakes
试试这个正则表达式:/[^@]+@[^@]+/ ;-) - Armand
我已经为此创建了单独的插件,并在我的部分视图中调用它,它起作用了!代码已更新在我的答案中。 - K.Z
显示剩余6条评论
2个回答

1

尝试使用JavaScript RegExp构造函数属性的以下代码。阅读更多这里

var emailReg = new RegExp(/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i);
if (!emailReg.test(inputVal)) {
      $(this).after('<span class="error error-keyup-7">Invalid Email Format.</span>');
}

无法解析表达式中的语法错误:@((?:[\w-]+.)*\w[\w-]{0,66}) - K.Z
我在<script type="text/javascript">中有一个代码块,我做得对吗? - K.Z
无需添加额外的库。 - Nishit Maheta
那非常奇怪! - K.Z
我已经为此创建了单独的插件,并在我的部分视图中调用它,它起作用了!代码已更新在我的答案中。 - K.Z
显示剩余4条评论

1
我已经为此创建了一个单独的插件,并在我的局部视图中调用它,它起作用了!
(function ($) {

   $.fn.validateEmail = function (_email) {

      alert(_email);

      var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;

      return re.test(_email);
   };

}(jQuery));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接