给定一个代表电子邮箱地址的字符串,我们的任务是判断它是否符合正确的格式。一个有效的电子邮箱通常包含用户名、@ 符号以及域名。
例如:
> 有效: [email protected], [email protected]
> 无效: myownsite.com, user@@gmail.com
下面我们将探讨在 Python 中检查电子邮箱是否有效的不同方法。
使用 email_validator
这种方法通过应用电子邮箱标准中定义的严格规则来验证邮箱。它会检查用户名、域名格式,以及域名部分是否有效。如果邮箱通过了验证,它会返回该邮箱的标准化(已清理)版本。
Python
CODEBLOCK_ac920391
输出结果
> Valid Email
原理解析:
- validate_email(email): 验证邮箱的结构和域名,当邮箱有效时返回一个详细的结果对象。
- res: 存储验证通过后的信息,例如标准化的邮箱格式。
- print("Valid Email"): 仅在验证成功时运行;如果邮箱无效,validate_email() 本身会抛出错误。
使用 validators 包
这种方法利用内置的验证逻辑来检查邮箱是否符合有效的模式。它会自动检查用户名、@ 符号和域名格式,并相应返回 True 或 False。
Python
CODEBLOCK_9362f3fe
输出结果
> Valid Email
原理解析:
- validators.email(email): 如果邮箱有效,则返回邮箱本身,否则返回 False。
- if 条件判断: 用于将邮箱分类为有效或无效。
使用正则表达式 (re.fullmatch)
这种方法使用正则表达式模式来匹配整个电子邮箱字符串。它验证每一个部分,确保整个电子邮箱遵循允许的字符规则。
Python
CODEBLOCK_40f75dce
输出结果
Valid Email
Invalid Email
原理解析:
- re.fullmatch(regex, email): 确保整个字符串完全匹配该模式。
- [A-Za-z0-9._%+-]+ 表示用户名中允许的字符,@ 是强制分隔符,[A-Za-z0-9.-]+ 代表域名,而 \.[A-Za-z]{2,7} 则代表 .com、.org 这样的后缀。
使用 re.match
这种方法检查电子邮箱是否以有效的邮箱模式开头。它并不强制整个字符串都匹配,但从开头起依然会验证用户名、@ 和域名部分。
Python
CODEBLOCK_877a54b1
输出结果
Valid email.
原理解析:
- re.match(): 仅从字符串的开头开始检查模式匹配。
- valid: 如果找到匹配项,则存储匹配对象,否则为 None。