如何在 Python 中验证电子邮件地址(python验证邮箱地址)

作者 : 慕源网 本文共2912个字,预计阅读时间需要8分钟 发布时间: 2021-10-4 共488人阅读

如何在 Python 中验证电子邮件地址(python验证邮箱地址)

介绍

在本文中,您将了解 Python Regex、各种 Python Regex 术语的含义,以及如何使用 Python 检查给定的电子邮件地址是否有效。

Python

Python 是一种解释性的、高级的、通用的编程语言,由 Guido van Rossum 创建并于 1991 年首次发布。他开始 Python 作为一个爱好项目,让他在圣诞节前后的一周内保持忙碌。它的名字来源于英国喜剧剧团巨蟒的名字。它用于:

  1. 软件开发
  2. Web开发
  3. 系统脚本
  4. 数学
要了解如何使用 Python 编程,请访问Python 基础知识

Python正则表达式

正则表达式或正则表达式存在于每种语言中,无论是 Java 或 JavaScript,还是任何其他语言。定义搜索模式的一系列字符称为正则表达式。这些模式通常用于对字符串进行“查找”或“查找和替换”操作,或者用于通过字符串搜索算法进行输入验证。它是在形式语言理论和理论计算机科学中发展起来的一种方法论。

您可以参考下表创建或解码各种正则表达式:

常用表达 描述
foo.* # 匹配任何以 foo 开头的字符串
\d* # 匹配任意数字十进制数字
[a-zA-Z]+ # 匹配一个或多个字母的序列
text 匹配文字文本
. 匹配除换行符以外的任何字符
^ 匹配字符串的开头
$ 匹配字符串的结尾
* 匹配 0 次或多次重复
+ 匹配 1 次或多次重复
? 匹配 0 或 1 次重复
+? 匹配 1 个或多个,尽可能少
*? 匹配 0 个或多个,尽可能少
{m,n} 匹配 m 到 n 次重复
{m,n}? 匹配 m 到 n 次重复,尽可能少
[…] 匹配一组字符
[^…] 匹配字符,不在一个集合中
A | B 匹配 A 或 B (…) 匹配括号中的正则表达式作为一个组
\number 匹配上一组匹配的文本
\A 匹配字符串的开头
\b 匹配单词开头或结尾的空字符串
\B 匹配不在单词开头或结尾的空字符串
\d 匹配任何十进制数字
\D 匹配任何非数字
\s 匹配任何空格
\S 匹配任何非空格
\w 匹配任何字母数字字符
\W 匹配不在的字符
\w \Z 在字符串末尾匹配。
\\ 字面反斜杠

要了解有关 Python 正则表达式的更多信息,请查看以下链接:

  1. 要了解 Python Regex 的基础知识,请访问并访问.
  2. 有关 Python Regex 的列表,请访问。

在 Python 中验证电子邮件地址

验证电子邮件意味着用户输入的电子邮件地址字段对应的输入是否符合我们想要的格式。假设我们程序员将电子邮件格式设置为“first_name.last_name@company_name.com”,用户输入“gupta.rohit@csharpcorner.com”。这个输入违反了我们的条件。有些读者可能会认为我们如何决定哪个是“first_name”,哪个是“last_name”。它是根据用户输入的名字和姓氏决定的。在这种情况下,我假设用户输入“rohit”作为first_name,“gupta”作为last_name。

电子邮件地址验证最常见的实现是在邮件服务器中找到,当您输入电子邮件地址时,系统会检查它是否遵循该特定邮件服务器的预定义格式。

现在让我们看看我们如何使用 Python 实现这一点:

方法一:1: 使用”re” package

import re   
  
regex = '^[a-z0-9]+[\._]?[a-z0-9]+[@]\w+[.]\w{2,3}$'  
  
def check(email):   
  
    if(re.search(regex,email)):   
        print("Valid Email")   
    else:   
        print("Invalid Email")   
      
if __name__ == '__main__' :   
      
    email = "rohit.gupta@mcnsolutions.net"  
    check(email)   
  
    email = "praveen@c-sharpcorner.com"  
    check(email)   
  
    email = "inform2atul@gmail.com"  
    check(email)   

要理解代码,你需要明白”^[a-z0-9]+[\._]?[a-z0-9]+[@]\w+[.]\w{2,3}$” 是什么意思。

  1. ^ 表示匹配字符串的开头,即在这里它告诉解释器 ^ 后面的序列是格式,它必须根据格式来决定哪个电子邮件有效,哪个无效。
  2. […] 表示匹配一组字符,而 [a-z0-9] 表示查找包含从小“a”到小“z”的字符和从 0 到 9 的数字的字符序列/组合。 + 表示匹配 1 次或多次重复。因此,[a-z0-9]+ 表示匹配所有小’a’到小’z’和0到9的数字的所有组合,重复一次或多次。
  3. [\._] 表示匹配 ‘.’ (点)和?表示查找 0 或 1 次重复。由于我们不允许在电子邮件地址中使用多个连续的点,所以 [\._]?意味着它必须匹配零次或一次出现的点。
  4. 我们有另一个 [a-z0-9]+ 以便找到小“a”到小“z”和从 0 到 9 重复一次或多次的数字的另一种组合,这可能是也可能不是一个点。
  5. [@]表示匹配@,\w表示匹配任意字母数字字符,即[@]\w+表示匹配@后接任意字母数字字符,重复一次或多次
  6. [.]\w{2,3} 表示匹配 dot 后跟任意长度为 2 或 3 的字母数字组合。用于匹配长度为 2 和 3 的域名。 如果要检查自定义域名称,因此您可以将其替换为 \w+。
  7. $ 表示匹配字符串的结尾,即 $ 表示标记验证序列的结尾。

该程序的输出将是“praveen@c-sharpcorner.com”被认为是无效的,而“rohit.gupta@mcnsolutions.net”和“inform2atul@gmail.com”被认为是有效的。

“praveen@c-sharpcorner.com”被认为是无效的,因为“@”后面的“-”。

如果您想让这些类型的电子邮件被认为是有效的,您需要将正则表达式更改为 “^[a-z0-9]+[\._]?[a-z0-9]+[@]\w+[ -]?\w+[.]\w{2,3}$”。你可以看到我添加了 +[-]?\w

您可以形成自己的序列,如 “^[az]([w-]*[az]|[w-.]*[az]{2,}|[az])*@[az]([w-] *[az]|[w-.]*[az]{2,}|[az]){4,}?.[az]{2,}$”。我不会解释这个正则表达式,它是你解码和理解这个正则表达式意味着什么的挑战。

其他方法

有各种可用的 Python 包和 API,它们的编码方式使您无需编写太多代码,只需 2 行代码,您就可以验证给定的电子邮件地址。

以下是一些电子邮件验证 Python 包:

  1. email-validator 1.0.5
  2. pylsEmail 1.3.2
  3. py3-validate-email

下面给出了一些电子邮件验证 API:

  1. Mailboxlayer
  2. Isitrealemail
  3. Sendgrid’s Email Validation API

还有许多其他免费和付费的 Python 包和 API。

如果您不想使用预先存在的 Python 包或 API,您可以编写自己的 Python 包或 API,或者您可以通过贡献其版本控制存储库(如 GitHub 存储库)来帮助改进当前的 Python 包和 API。

结论

在本文中,我们讨论了什么是 Python 正则表达式以及如何创建不同的正则表达式。然后我们学习了在 Python 中验证电子邮件地址的不同方法。请尝试这些方法,并评论您对本文有用程度的看法。


慕源网 » 如何在 Python 中验证电子邮件地址(python验证邮箱地址)

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录