验证字符串是有效电子邮件地址的最优雅的代码是什么?
#1楼
就个人而言,我想说的是,您应该确保其中有一个@符号,可能还有一个。 字符。 您可以使用多种正则表达式来改变正确性,但我认为其中大多数会忽略有效的电子邮件地址,或者让无效的电子邮件地址通过。 如果人们想输入伪造的电子邮件地址,他们将输入伪造的电子邮件地址。 如果您需要验证电子邮件地址是合法的,并且该人可以控制该电子邮件地址,那么您将需要向他们发送一封带有特殊编码链接的电子邮件,以便他们可以验证该地址确实是真实地址。
#2楼
电子邮件地址验证并不像看起来那样容易。 从理论上讲,实际上仅使用正则表达式完全无法验证电子邮件地址。
查看我的博客文章 ,以获取有关该主题的讨论以及使用FParsec的F#实现。 [/ shameless_plug]
#3楼
老实说,在生产代码中,我要做的最好的就是检查@
符号。
我永远无法完全验证电子邮件。 你知道我怎么看它真的有效吗? 如果发送了。 如果没有,那就很糟糕,如果做到了,那将是生活的美好。 这就是我所需要知道的。
#4楼
我发现此正则表达式在检查不仅仅是@标记的内容与接受奇怪的边缘情况之间是一个很好的权衡:
^[^@\s]+@[^@\s]+(\.[^@\s]+)+$
至少会使您在@标记周围加上一些内容,并至少使它看起来正常。
#5楼
如果您和我的意思是真的想知道一个电子邮件地址是否有效...请向邮件交换者进行证明,则不需要正则表达式。 如果需要,我可以提供代码。
常规步骤如下:1.电子邮件地址是否包含域名部分? (@的索引> 0)2.使用DNS查询询问域是否具有邮件交换器3.打开到邮件交换器的tcp连接4.使用smtp协议,使用电子邮件地址作为接收者打开到服务器的消息5。解析服务器的响应。 6.如果您已经做到了,请退出该消息,一切都很好。
您可以想象,这是非常昂贵的时间,并且依赖于smtp,但是它确实起作用。
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3162495