【问题标题】:Whats wrong with my email regex? [duplicate]我的电子邮件正则表达式有什么问题? [复制]
【发布时间】:2016-04-21 10:29:26
【问题描述】:

我有以下正则表达式:

var emailRegex = "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$"

当我尝试输入时:

asd@asd

匹配。为什么?

【问题讨论】:

  • 因为这是一个有效的电子邮件地址。
  • @Juhana,你能解释一下吗?
  • 根据规范,地址中允许单独使用 TLD。实际上,没有人拥有这样的公共地址,但它仍然有效。
  • 问题是反斜杠在您使用字符串创建正则表达式时需要转义。使用正则表达式文字或转义反斜杠。

标签: javascript regex email-validation


【解决方案1】:

电子邮件服务不必连接到任何域。 以下电子邮件均正确:

  • cezary@localhost
  • cezary@192.168.1.100
  • cezary@domain
  • cezary@com

在“有效电子邮件地址”下查看更多信息:https://en.wikipedia.org/wiki/Email_address

因此,如果您只想允许公开电子邮件,请尝试其他正则表达式 :-)

【讨论】:

    【解决方案2】:

    Validate email address in JavaScript?回答你的问题
    试试这个:

    function validateEmail(email) {
        var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
        return re.test(email);
    }
    alert(validateEmail("test@gmail.com"));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-26
      • 2010-10-01
      • 2012-10-03
      • 2014-05-10
      • 2011-04-03
      • 1970-01-01
      • 2011-04-19
      • 2010-10-16
      相关资源
      最近更新 更多