【问题标题】:Error in email validation regular expression电子邮件验证正则表达式中的错误
【发布时间】:2015-08-07 18:29:13
【问题描述】:

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

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

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

jQuery 函数

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

});

【问题讨论】:

  • 奇怪,它在我这边工作正常。
  • 你从哪里得到那个正则表达式?它可能不适用于此列表中的大多数域:newtldlist.com
  • @toxic 你的代码在我这边也能正常工作。我发现一件事你需要删除 &lt;span class="error error-keyup-7"&gt;Invalid Email Format.&lt;/span&gt; before ,否则它会附加到 previous 旁边。Working demo
  • 我需要添加一些库来在javaScript中添加表达式吗???
  • 我在 ASP.NET-MVC 中有部分视图,其中我在 中添加了代码块

标签: javascript jquery email-validation


【解决方案1】:

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

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}) 的表达式中不再出现语法错误
  • 我在
  • 无需添加额外的库
  • 这很奇怪!
  • 我在上面的问题中有上传错误屏幕截图
【解决方案2】:

我为此创建了单独的插件并在我的局部视图中调用它并且它有效!

(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));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 2014-05-11
    相关资源
    最近更新 更多