格式概述

邮箱地址符合“名称@域名”规则。字符“@”在邮箱地址的“名称”和“域名”之间,邮箱地址名称只允许由英文字母、数字、下划线组成,域名只允许由英文字母、数字、“.”(点号)组成。

比如,mail@qq、mail@vip.qq就是符合上述规则的邮箱。

模式说明

[\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@qq.vip"
>>> re.match(pattern, email)
<re.Match object; span=(0, 16), match='email@qq.vip'>
# 不符合格式的邮箱号,包含特殊字符+
>>> email = "+5122@qq"
>>> re.match(pattern, email)
None

更多推荐

正则表达式:邮箱匹配