Python正则表达式综合案例:匹配电子邮箱
2023-07-13 15:48 作者:矢来美羽MIUYARAI | 我要投稿
匹配电子邮箱地址,只允许qq、163、gmail这三种邮箱地址。
正则表达式的详细语法知识可参考:https://www.runoob.com/regexp/regexp-syntax.html
代码:
解析:
r'^(内容)$'——“r”表示raw取消转义符,“^”表示字符串开头,“$”表示字符串结尾。
[\w-]+——“[\w-]”表示匹配“a-z A-Z 0-9 _”和“-”,“+”表示匹配前一个规则的字符数量≥1个。
(\.[\w-]+)*——“\.”是用转义符表示“.”,“[\w-]+”和上文相同,“*”表示匹配前一个规则的字符数量≥0个。
@(qq|163|gmail)——“@”不需要转义符,“()”中的这个规则用“|”表示“或”。
(\.[\w-]+)+——“(\.[\w-]+)”和上文相同,但不再是≥0个,而是≥1个,因此“*”改成“+”。

上面这个规则其实非常宽泛,允许的大致格式如下:
{内容}[.{内容}.{内容}]@ {主机名}.{域名}[.{子域}.{子域}]
参考视频:正则表达式-元字符匹配

实际上,电子邮件的规则其实并不统一,可以参考以下资料:
[1] 涉及汉字用户名:https://blog.csdn.net/weixin_42698221/article/details/126635759
[2] 涉及更多限制:https://zhuanlan.zhihu.com/p/268816111
合法E-mail地址:
1. 必须包含一个并且只有一个符号“@”
2. 第一个字符不得是“@”或者“.”
3. 不允许出现“@.”或者.@
4. 结尾不得是字符“@”或者“.”
5. 允许“@”前的字符中出现“+”
6. 不允许“+”在最前面,或者“+@”