有没有一种使用正则表达式检查表单输入以确保它是正确样式的电子邮件地址的好方法?自昨晚以来一直在搜索,如果它是子域电子邮件地址,则每个回答过人们有关此主题问题的人似乎也有问题。
最佳答案
没有意义。即使您可以验证电子邮件地址在语法上是有效的,您仍然需要检查它是否没有输入错误,并且它实际上是发送给您认为的人。这样做的唯一方法是向他们发送电子邮件并让他们单击链接进行验证。
因此,最基本的检查(例如,他们没有意外输入街道地址)通常就足够了。类似于:它只有一个 @
符号,并且在 @
:
.
[^@]+@[^@]+\.[^@]+
您可能还想禁止空格 - 可能存在包含空格的有效电子邮件地址,但我从未见过,所以这是用户错误的可能性在您这边。
如果您想要完整检查,请查看 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/