我已经编写了下面的正则表达式来进行非常简单的电子邮件验证.我打算发送确认链接.
/.*@[a-z0-9.-]*/i
但是,我想从当前状态增强它,因为像这样的字符串不会产生所需的结果:
test,my.name + test @ gmail-something.co.uk,test
"测试"部分不合需要地包括在匹配中.我没有成功地尝试过单词边界.
我该怎么修改?
虽然我保持这么简单,但它会排除任何有效的电子邮件格式吗?
谢谢!
这是一个很多更复杂!看邮件:: RFC822 ::地址,害怕......非常害怕.
不要使用正则表达式来验证电子邮件地址
相反,来自Ben Finney编写的mail.python.org/pipermail/python-list 1.
当人们问"我如何验证电子邮件地址是否有效?"时,我看到了最好的建议.是"尝试发送邮件给它".
它既是Pythonic,也是真正最好的方式.如果您确实想要确认,请不要尝试静态验证它; 使用电子邮件地址,并检查结果.发送电子邮件到该地址,除非您收到来自收件人的回复"是,这是正确使用的地址",否则不要再使用它.
发送系统的邮件传输代理(而非正则表达式)确定将邮件发送到的域的哪个部分.
域名系统(而非正则表达式)确定哪些域有效,以及哪个主机应该接收该域的邮件.
最特别的是,接收邮件系统而不是正则表达式确定哪些本地部分有效.
1 这是它死之前的原始链接
几乎没有任何你使用的东西是短暂的,因为看起来很有意义将TRULY验证一个电子邮件地址.话虽如此,这是我通常使用的:
^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
它实际上是ASP.NET的电子邮件地址的正则表达式验证器的内置正则表达式.
注意:此线程中给出的许多正则表达式可能在90年代有效,但在当今的Web环境中,TLD允许少于2个字符且超过4个字符.例如,info @about.museum是一个有效的电子邮件地址,因为.museum是新的长TLD之一.