格式概述
邮箱地址符合“名称@域名”规则。字符“@”在邮箱地址的“名称”和“域名”之间,邮箱地址名称只允许由英文字母、数字、下划线组成,域名只允许由英文字母、数字、“.”(点号)组成。
比如,[email protected]、[email protected]就是符合上述规则的邮箱。
模式说明
[\w]+@[A-Za-z]+(\.[A-Za-z0-9]+){1,2}
分为两个部分,第一个部分[\w]+用于匹配邮箱的名称,第二个部分[\w]+(.[A-Za-z]+){1,2}用于匹配域名。
\w表示匹配数字、字母、下划线,[\w]+表示匹配一个或多个数字、字母、下划线;[A-Za-z]用于匹配一个字母,[A-Za-z]+用于匹配一个或多个字母,.[A-Za-z]+用于匹配以.(点号)开头并连接一个或多个字母,{1,2}表示匹配表达式(.[A-Za-z]+)一次或者两次。
注意,该正则表达式不是唯一的。还可以有其他的形式:
\b[\w]+@[A-Za-z]+(\.[A-Za-z0-9]+){1,2}\b
^\w+@[A-Za-z]+(\.[A-Za-z0-9]+){1,}$
使用示例
>>> import re
>>> pattern = r"[\w]+@[A-Za-z]+(\.[A-Za-z0-9]+){1,2}\b"
# 符合格式邮箱号
>>> email = "[email protected]"
>>> re.match(pattern, email)
<re.Match object; span=(0, 16), match='[email protected]'>
# 不符合格式的邮箱号,包含特殊字符+
>>> email = "[email protected]"
>>> re.match(pattern, email)
None