如何验证包含两个句点的电子邮件地址(Python)

Posted

技术标签:

【中文标题】如何验证包含两个句点的电子邮件地址(Python)【英文标题】:How to validate an email address with two periods in it (Python) 【发布时间】:2021-03-20 11:20:53 【问题描述】:

下面有一个代码sn-p,当你输入一个电子邮件地址时,例如email@gmail.com,它会说它是有效的。

但是,如果我输入一个电子邮件地址,例如 email@students.school.edu,它会说它是无效的。我用我自己的学校电子邮件地址尝试了这个,里面有两个句点,它说它是无效的。

有没有一种方法可以使用正则表达式验证带有一个句点的常规电子邮件地址和一个带有两个句点的电子邮件地址,如下所示?

import re
email = input ("Type in an email address: ")
if re.match("\A(?P<name>[\w\-_]+)@(?P<domain>[\w\-_]+).(?P<toplevel>[\w]+)\Z",email,re.IGNORECASE):
    print("Email is valid")
else:
    print("Email is invalid")

【问题讨论】:

【参考方案1】:

您可以尝试集成一些外部更复杂的解决方案,例如mailcheck.co 或类似服务。要点是您可以做的不仅仅是正式检查。您可以验证电子邮件是否可操作、用户真实姓名、个人资料照片等。

【讨论】:

【参考方案2】:

您可以对电子邮件使用 python 正则表达式标准:

r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)

来源:https://emailregex.com/

所以,在你原来的 sn-p 的上下文中,它会是:

import re
email = input ("Type in an email address: ")

if re.match(r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)", email):
    print("Email is valid")
else:
    print("Email is invalid")

【讨论】:

您是什么意思“电子邮件的python regex 标准”?这是什么来源? ^^ 并不是挑战,只是对本声明的权威性真正感兴趣 当然,我不认为这是一个“官方”来源哈哈,只是我在谷歌上发现的。我用链接更新了我的答案。 请注意,这也将匹配 email@students.school... 非常感谢!正是我想要的。 :)【参考方案3】:
import re
email = input ("Type in an email address: ")
if email!= "":
    mailValidation = bool(re.search("^[a-zA-Z0-9.]+@[a-zA-Z]+.[comrgin]", email))
    if mailValidation == True:
        print("Validate mail.")
    else:
        print("Please check mail.")

【讨论】:

以上是关于如何验证包含两个句点的电子邮件地址(Python)的主要内容,如果未能解决你的问题,请参考以下文章

当文件名包含句点时如何引用python包

如何在 python 中验证域的 MX 记录?

如何使用 smtplib 在 Python 中验证电子邮件地址

如何使用 Python 验证电子邮件地址

如何使用 Python 验证电子邮件地址

如何在表单中验证电子邮件地址的域?