我们的质量检查方提出了一个错误,指出电子邮件地址的顶级域名不能是一个字符。
foo@bar.z
我很难调查标准。有人可以确认设置顶级域最小长度是否正确吗?
答案 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]中,但它并不是一个恒定的标准,因为一切都在变化。验证电子邮件非常困难,您无法知道电子邮件地址是否可以实际接收电子邮件,直到您尝试向其发送电子邮件,尽管它符合电子邮件正式标准。