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

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

最佳答案

没有意义。即使您可以验证电子邮件地址在语法上是有效的,您仍然需要检查它是否没有输入错误,并且它实际上是发送给您认为的人。这样做的唯一方法是向他们发送电子邮件并让他们单击链接进行验证。

因此,最基本的检查(例如,他们没有意外输入街道地址)通常就足够了。类似于:它只有一个 @ 符号,并且在 @:

之后的部分中至少有一个 .
[^@]+@[^@]+\.[^@]+

您可能还想禁止空格 - 可能存在包含空格的有效电子邮件地址,但我从未见过,所以这是用户错误的可能性在您这边。

如果您想要完整检查,请查看 this question .


更新:以下是您可以使用任何此类正则表达式的方法:

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 服务器联系以验证地址是否存在。但是,这仍然不能保证它属于正确的人。

https://stackoverflow.com/questions/8022530/

相关文章:

python - 获取列表的内容并将其附加到另一个列表

regex - 如何使用 wget 下载整个目录和子目录?

mysql - 如何测试MySQL在哪个端口上运行以及是否可以连接?

linux - 我什么时候应该在 shell 变量周围加上引号?

python - 只读取文件的第一行?

python - Python 是否优化尾递归?

python - 为什么元组可以包含可变项?

linux - 如何重定向已运行进程的输出

linux - 移动除一个以外的所有文件

python - 迭代模板中的模型实例字段名称和值