一尘不染

Python-如何检查有效的电子邮件地址?

python

有没有一种使用正则表达式检查表单输入的好方法,以确保它是正确的样式电子邮件地址?自昨晚以来一直在搜索,如果它是子域的电子邮件地址,则回答了有关该主题的人们疑问的每个人似乎也有问题。


阅读 1512

收藏
2020-02-19

共1个答案

一尘不染

无关紧要。即使你可以验证该电子邮件地址在语法上是有效的,你仍然需要检查该电子邮件地址是否未键入错误,以及该地址是否确实属于你认为确实有用的人。唯一的方法是向他们发送电子邮件,并让他们单击链接进行验证。

因此,最基本的检查(例如,他们没有意外输入街道地址)通常就足够了。喜欢的东西:它只能有一个@标志,和至少一个.在后的部分@

[^@]+@[^@]+\.[^@]+

你可能还想禁止使用空格-可能有有效的电子邮件地址,其中包含空格,但我从未见过,因此,出现用户错误的可能性就在你身边。

如果要全面检查,请查看此问题。

更新:这是你如何使用任何此类正则表达式的方法:

import re

if not re.match(r"... regex here ...", email):
  # whatever

Python≥3.4具有比re.fullmatch更好的选择re.match

注意r字符串的前面;这样,你就不必两次逃脱。

如果要检查的正则表达式数量很多,那么先编译正则表达式可能会更快:

import re

EMAIL_REGEX = re.compile(r"... regex here ...")

if not EMAIL_REGEX.match(email):
  # whatever

另一个选择是使用该validate_email程序包,该程序包实际上与SMTP服务器联系以验证该地址是否存在。但是,这仍然不能保证它属于正确的人。

2020-02-19