这个 Python 正则表达式对于电子邮件地址是不是足够好? [复制]

Posted

技术标签:

【中文标题】这个 Python 正则表达式对于电子邮件地址是不是足够好? [复制]【英文标题】:Is this Python regex good enough for email address? [duplicate]这个 Python 正则表达式对于电子邮件地址是否足够好? [复制] 【发布时间】:2018-09-12 00:29:54 【问题描述】:

我一直在审查 Python3 的正则表达式以捕获电子邮件地址。我在流行的正则表达式网站上看到了该文档。并阅读 pydocs、SO 答案等。

我想知道这个正则表达式是否足以捕获电子邮件地址,或者我是否遗漏了什么。

re.findall(r'[\w.+-]+@[\w.+-]+', some_string)

【问题讨论】:

这取决于您对“足够好”的定义。使用正则表达式验证电子邮件地址很难正确。 @BryanOakley 我见过的大多数电子邮件地址都是数字、字母、破折号、句号、加号、下划线。不希望验证表单、电子邮件字段。但从抓取中捕获。下面的答案说它将无法捕获'和&。但我以前从未在电子邮件地址上看到过这样的字符。足够好是电子邮件地址的最大百分比,但不是全部。 请注意,“我见过的电子邮件地址”与“所有有效的电子邮件地址”不同。但就像我之前说的,这真的取决于你对“足够好”的定义。 我曾经看过一个人的博客文章,他声称写了一个完整的电子邮件地址正则表达式,包括 IPv6、IDN 和其他东西。它有几个屏幕页面长。 @tomordonez 撇号在使用FIRSTNAME-LASTNAME@example.com 等地址格式的公司电子邮件系统中有些常见,尤其是与O'ReillyO'Sullivan 等爱尔兰父名结合使用。 【参考方案1】:

没有。这将无法匹配具有本地部分中某些特殊字符的电子邮件地址。这将遗漏的最常见字符是'&,它们都是有效的。

【讨论】:

以上是关于这个 Python 正则表达式对于电子邮件地址是不是足够好? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Python正则表达式,在地址中查找电子邮件域

使用正则表达式python查找电子邮件[重复]

iOS中电子邮件地址的正则表达式验证并检查空白条目[重复]

Python学习手册之正则表达式示例--邮箱地址提取

python中利用正则表达式匹配ip地址

python中的正则表达式中的 ""