【问题标题】:Email validation using javascript/Jquery [closed]使用 javascript/Jquery 进行电子邮件验证 [关闭]
【发布时间】:2011-06-01 12:25:08
【问题描述】:

大家好 我面临电子邮件验证的问题。一组测试人员测试了我的网页,但由于电子邮件验证,他们拒绝了我的开发。

他们正在输入电子邮件,例如 abc@gmail.123.com、abc@gmail.com.com、abc@gmail.123.com 等等……

我没有得到这种验证这种电子邮件的正则表达式。 特别是 .com、.net、.ca、.123

是否有任何正则表达式或 javascript 验证可以验证此类电子邮件?

关于这个的任何想法

【问题讨论】:

  • 您的问题是什么,更重要的是,您的代码在哪里
  • 你用什么正则表达式?
  • 告诉那些测试人员去兜售他们的论文。

标签: javascript jquery email-validation


【解决方案1】:

我建议您对此进行一些研究。电子邮件地址不能,重复不能很容易通过正则表达式验证。

如果您只想验证地址部分 user@host.domain 是可行的。但验证“Foo Bar” 并不容易。

我建议查看关于 SMTP 的 RFC,特别是在寻址方面,以制作一个可以满足您需求的正则表达式。

【讨论】:

  • RFC 2822 可能会有所帮助
  • 感谢@martin(本来想说 RFC-822 但那是老套路)
【解决方案2】:
var email = 'abc@gmail.123.com'
if (email.match('^[A-z0-9._%-]+@[A-z0-9.-]+\.[A-z]{2,4}$') == email) {
    alert('email is valid!')
} else {
    alert('you have an error in your email')
}

【讨论】:

    【解决方案3】:

    google 上的 first result 提供了一些很好的信息:

    该页面是正则表达式的一个很好的起点,并描述了匹配电子邮件地址的一些权衡。正如其他人所说,没有标准的方法。使用正则表达式验证电子邮件地址并不像看起来那么容易。

    您可以使用以下正则表达式作为起点:

    \b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b
    

    请查看the article 以获得更详细的说明。

    【讨论】:

    • 所以你会禁止在电子邮件地址中使用小写字母?
    • 我不会。我只是将我的正则表达式引擎设置为不区分大小写(如文章中所述)。
    • 否决我的答案并使用完全相同的链接投票赞成评论。有人真的读过这篇文章吗?!?
    【解决方案4】:

    很多答案,但这是我的 2 便士:没有一个正则表达式可以以零误报率正确验证所有电子邮件。是的,有 RFC 规范,是的,有一个(非常长且讨厌的)正则表达式来匹配它,但这仍然不能涵盖所有内容:一些电子邮件系统支持不符合此规范的电子邮件地址。

    此处建议的任何更短/更简单的正则表达式都适用于 95 - 99% 的电子邮件地址,但不是所有的。即使电子邮件地址格式有效,您仍然不知道它实际上是一个真实地址。即使向该地址发送测试消息也无济于事:许多电子邮件服务器会静默丢弃不存在地址的传入电子邮件。所以检查格式有效性真的没有意义:你仍然不知道地址是否正确。

    所以我推荐的唯一电子邮件验证是检查“@”字符必须在每个地址中。非常简单,将拒绝所有垃圾,例如机器人垃圾,并确保没有合法地址被拒绝。

    Tl;dr:检查格式有效性是没有意义的,因为正则表达式不充分,而且您也不知道有效的格式地址是否良好。只需检查“@”字符即可。

    【讨论】:

      【解决方案5】:

      以下示例 javascript 函数应查找以字母或数字开头的电子邮件地址。

      function emailValidate(emailValue){
          var pattern=/^([a-zA-Z]+[0-9]*)\.?([a-zA-Z]+)?$/;
          if(pattern.test(emailValue))
              return true;
          else
              return false;
      }
      

      【讨论】:

      • 电子邮件地址的本地部分以数字开头是完全可以的。
      【解决方案6】:

      你可以使用这个功能

      function isemail(field){
          with (field){
            apos=value.indexOf("@");
            apos2=value.lastIndexOf("@");
            dotpos=value.lastIndexOf(".");
            if (apos<1 || dotpos-apos<2 || apos!=apos2 || value=="example@example.com")
                      return false;
            else return true;
            }
      }
      

      【讨论】:

      • “example@example.com”有什么问题?
      • 实际上我喜欢禁止 example@example.com 背后的想法。但是还有一千多个虚拟地址需要处理。
      • 我阻止它,因为我曾经将它用作文本输入中的默认值,仅此而已
      【解决方案7】:

      这个正则表达式应该可以工作:

       /^(([a-zA-Z0-9\._-]+)@([a-zA-Z0-9-]+)\.([a-zA-Z]{2,4}))$/g
      

      【讨论】:

      • 对正则表达式的 3 个答案投反对票?!为什么?
      猜你喜欢
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 2013-12-21
      • 1970-01-01
      • 1970-01-01
      • 2018-06-01
      相关资源
      最近更新 更多