顶级域名的电子邮件地址验证

时间:2013-03-21 00:32:24

标签: javascript email email-validation tld

我们的质量检查方提出了一个错误,指出电子邮件地址的顶级域名不能是一个字符。

foo@bar.z

我很难调查标准。有人可以确认设置顶级域最小长度是否正确吗?

3 个答案:

答案 0 :(得分:2)

验证电子邮件地址的规则非常复杂,因为它们的实施可能存在错误。

请考虑直接验证电子邮件地址,而不是验证电子邮件地址:http://davidcel.is/blog/2012/09/06/stop-validating-email-addresses-with-regex/

您的案例存在的问题是,ICANN可能会引入单字母顶级域名,并且个别DNS标签可以长度为1,事实上“ bar.z“是一个有效的电子邮件地址域名,如果从作为子域存在的DNS树/组织内发送(即如果邮件服务器是smtp.mycompany.org,我还为{定义了一个MX服务器{1}})。

答案 1 :(得分:1)

请注意,我为此目的编写了一个小型C库调用libtld。它可能对您有用。请注意,在全球范围内支持所有TLD所需的数据量非常惊人,因此我不会在Javascript中实现此类数据。话虽这么说,也许你可以更多地压缩数据......这个库还包括一个PHP扩展,所以你可以直接从PHP使用这些函数和结果。

答案 2 :(得分:0)

到目前为止,电子邮件顶级域名的长度应该位于[2,6]中,但它并不是一个恒定的标准,因为一切都在变化。验证电子邮件非常困难,您无法知道电子邮件地址是否可以实际接收电子邮件,直到您尝试向其发送电子邮件,尽管它符合电子邮件正式标准。