用于电子邮件验证的正则表达式

chi*_*ior 9 regex email

我已经编写了下面的正则表达式来进行非常简单的电子邮件验证.我打算发送确认链接.

/.*@[a-z0-9.-]*/i
Run Code Online (Sandbox Code Playgroud)

但是,我想从当前状态增强它,因为像这样的字符串不会产生所需的结果:

test,my.name + test @ gmail-something.co.uk,test

"测试"部分不合需要地包括在匹配中.我没有成功地尝试过单词边界.

  1. 我该怎么修改?
  2. 虽然我保持这么简单,但它会排除任何有效的电子邮件格式吗?

谢谢!

小智 15

这是一个很多更复杂!看邮件:: RFC822 ::地址,害怕......非常害怕.


alx*_*lxp 14

不要使用正则表达式来验证电子邮件地址

相反,来自Ben Finney编写的mail.python.org/pipermail/python-list 1.

当人们问"我如何验证电子邮件地址是否有效?"时,我看到了最好的建议.是"尝试发送邮件给它".

它既是Pythonic,也是真正最好的方式.如果您确实想要确认,请不要尝试静态验证它; 使用电子邮件地址,并检查结果.发送电子邮件到该地址,除非您收到来自收件人的回复"是,这是正确使用的地址",否则不要再使用它.

发送系统的邮件传输代理(而非正则表达式)确定将邮件发送到的域的哪个部分.

域名系统(而非正则表达式)确定哪些域有效,以及哪个主机应该接收该域的邮件.

最特别的是,接收邮件系统而不是正则表达式确定哪些本地部分有效.

1 这是它死之前的原始链接

  • 这个链接现在似乎已被打破. (15认同)
  • "有着奇怪电子邮件地址的人可能会吐"你被解雇了. (3认同)
  • 当我们说验证电子邮件地址时,我们谈论的是两件事。1. 正在验证它是否是真实的电子邮件地址(您可以通过向该地址发送确认链接来验证该地址。2. 是大多数人正在谈论的验证。即使用正则表达式“帮助”用户输入地址。x@xx 就是您所需要的。我们不是来验证 imanidiot@yourmomshouse.lol 是否是真实的电子邮件地址。每个反对电子邮件正则表达式验证的人要么不完全理解问题,要么就是彻头彻尾的巨魔。 (3认同)

Ric*_*ick 6

几乎没有任何你使用的东西是短暂的,因为看起来很有意义将TRULY验证一个电子邮件地址.话虽如此,这是我通常使用的:

^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
Run Code Online (Sandbox Code Playgroud)

它实际上是ASP.NET的电子邮件地址的正则表达式验证器的内置正则表达式.

注意:此线程中给出的许多正则表达式可能在90年代有效,但在当今的Web环境中,TLD允许少于2个字符且超过4个字符.例如,info @about.museum是一个有效的电子邮件地址,因为.museum是新的长TLD之一.


Mar*_*own 1

代替 。尝试匹配除 \s(空格)之外的每个字符:

/[^\s]*@[a-z0-9.-]*/i
Run Code Online (Sandbox Code Playgroud)