【问题标题】:Using JavaScript RegExp to valid email. Regex special characters not working使用 JavaScript RegExp 验证电子邮件。正则表达式特殊字符不起作用
【发布时间】:2013-05-31 00:24:29
【问题描述】:

我有这个 JavaScript 函数:

function emailaddresscheck() {
        var emailregex = new RegExp("[A-Z0-9._%+-]+@[A-Z0-9.-]+\.(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)");
        var emailstring = $("#email-address").val();
        if (emailregex.test(emailstring)) {
            $("#email-address-check").fadeIn(100);
            return true;
        }
        else if ($("#email-address").val().length <= 5) {
            $("#email-address-check").fadeOut(100);
            return false;
        }
    }

如果我在 RegExp 构造函数中有一个简单的字符串,但这个更复杂的正则表达式不起作用,if 条件就会触发。

我哪里错了?

更新:

这是完成的工作代码:

function emailaddresscheck() {
        var emailregexp = new RegExp("^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.(?:[A-Za-z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$");
        var emailstring = $("#email-address").val();
        if (emailregexp.test(emailstring) === true) {
            $("#email-address-check").fadeIn(100);
            return true;
        }
        else if (emailregexp.test(emailstring) === false) {
            $("#email-address-check").fadeOut(100);
            return false;
        }
    }

【问题讨论】:

  • 您能发布一些无效的输入吗?
  • 我不能,因为使用这个正则表达式,JavaScript 弹出框不会打开。

标签: javascript regex validation email


【解决方案1】:

当您使用 RegExp 构造函数创建正则表达式时,您需要双重转义特殊字符,因为它们在字符串中。

new RegExp("[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)");
                                     -^-    

或者只使用文字正则表达式:

/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)/

【讨论】:

  • 好答案,你的更好。我正在删除我的。
  • 感谢您的信息!现在工作得很好!
猜你喜欢
  • 1970-01-01
  • 2013-08-11
  • 1970-01-01
  • 2014-05-11
  • 2011-10-27
  • 2013-01-16
  • 1970-01-01
  • 2020-11-04
  • 1970-01-01
相关资源
最近更新 更多