如何在 Python 中验证电子邮件?

17 Mar 2025 | 4 分钟阅读

电子邮件验证是任何需要用户输入电子邮件地址的应用程序中的重要步骤。不准确或无效的电子邮件地址可能导致通信中断、数据丢失以及系统效率低下。Python 提供了几种验证电子邮件地址的方法,包括正则表达式、内置模块和第三方库。在本文中,我们将讨论 Python 中电子邮件验证的不同方法,并提供如何实现的示例。

使用正则表达式

正则表达式是匹配字符串中模式的强大工具,可用于检查给定的电子邮件地址是否符合特定模式。电子邮件地址的基本结构是 local-part@domain。local-part 可以包含字母、数字和特殊字符,如“+”和“.”。domain 可以包含字母、数字和特殊字符,如“-”和“.”。要使用正则表达式验证电子邮件地址,我们需要将字符串与符合电子邮件地址结构的模式进行匹配。

这是一个使用正则表达式验证电子邮件地址的 Python 函数示例

输出

How to Validate Email in Python

说明

  • 在此示例中,我们首先导入 re 模块,该模块支持 Python 中的正则表达式。
  • 接下来,我们定义一个名为 validate_email 的函数,该函数以电子邮件地址作为其参数。在该函数内部,我们使用 match() 函数来检查电子邮件地址是否与模式 r"[^@]+@[^@]+\.[^@]+" 匹配。此模式将匹配任何包含一个或多个非 @ 符号的字符,后跟一个 @ 符号,后跟一个或多个非 @ 符号的字符,后跟一个句点,后跟一个或多个非 @ 符号的字符的字符串。
  • 假设电子邮件地址匹配此模式,match() 函数将返回一个匹配对象,该对象为真。在这种情况下,函数将返回 True。
  • 如果电子邮件地址不匹配该模式,match() 函数将返回 None,该值为假。在这种情况下,函数将返回 False。
  • 最后,我们使用 if-else 语句来检查电子邮件地址是否有效并相应地打印消息。
  • 请注意,此示例中提供的正则表达式模式相对基础,可能无法检测到所有无效的电子邮件地址。例如,此模式将不会检测到包含电子邮件地址不允许的字符(如空格或控制字符)的电子邮件地址。
  • 它也不会检查电子邮件地址的长度限制或域验证。更健壮的模式可能是这样的 ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

使用第三方库

在 Python 中验证电子邮件地址的另一种方法是使用第三方库,如 validate_email 或 py_email_validator。这些库提供了比内置电子邮件模块或正则表达式更高级的电子邮件验证功能,包括域验证。

以下是使用 validate_email 库验证电子邮件地址的示例

输出

How to Validate Email in Python

说明

  • 在此示例中,我们首先从 validate_email 库中导入 validate_email 函数。
  • 接下来,我们将电子邮件地址作为参数传递给 validate_email()。如果电子邮件地址有效,该函数将返回 True。
  • 如果电子邮件地址无效,该函数将返回 False。
  • 最后,我们使用 if-else 语句来检查电子邮件地址是否有效并相应地打印消息。
  • 请注意,validate_email 或 py_email_validator 等第三方库比内置电子邮件模块或正则表达式更健壮,因为它们会检查许多内容,例如确保电子邮件地址不过长、仅包含有效字符以及域有效。

结论

总之,Python 中验证电子邮件地址的几种方法包括使用正则表达式、内置电子邮件模块以及 validate_email 或 py_email_validator 等第三方库。每种方法都有其优点和缺点,最佳方法将取决于您的具体需求。但是,为了获得更好的结果,始终建议使用更健壮的库进行电子邮件验证。请注意,无论您选择哪种方法,都应始终使用各种有效和无效的电子邮件地址测试验证函数,以确保其正常工作。您还应该考虑其他因素,例如电子邮件地址长度限制和域验证,以确保您的验证函数尽可能健壮。