繁体   English   中英

寻找正则表达式-解析电子邮件

[英]Looking for a regular expression - parse email

我需要解析以下字符串的电子邮件地址部分:

“兔子先生” <bob@bunny.com>
<bob@bunny.com>
“鲍勃是兔子” <bob@bunny.com>
bob@bunny.com
“ 123去鲍勃去!” <bob@bunny.com>

我在所有情况下都在寻找字符串“ bob@bunny.com”,并且可以忽略其余部分。

我已经尝试了/“ [^”]?“?\\ s?<?([[ww .. ??)>)

有什么建议吗?

FWIW将在Perl中运行。

如果您想要一个符合RFC 2822的规范,那么您将需要将其转换为Regex语法:

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

来自http://www.regular-expressions.info/email.html ,其中包含其他较小的表达式。

如果一个简单的正则表达式可以做到,那么您可以使用:

([a-zA-Z0-9 ._%-] + @ [a-zA-Z0-9 .-] +。[a-zA-Z] {2,4})

如@Peter所述,如果要遵守RFC 2822,它将变得更加复杂。但是,实际上,您可能不希望完全遵守,因为RFC指定了过时的双引号和方括号的使用,甚至不支持通过一些电子邮件应用程序。 一个更实际但仍然相当健壮的示例如下所示:

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM