Python正則表達(dá)式綜合案例:匹配電子郵箱
匹配電子郵箱地址,只允許qq、163、gmail這三種郵箱地址。
正則表達(dá)式的詳細(xì)語(yǔ)法知識(shí)可參考:https://www.runoob.com/regexp/regexp-syntax.html
代碼:
解析:
r'^(內(nèi)容)$'——“r”表示raw取消轉(zhuǎn)義符,“^”表示字符串開頭,“$”表示字符串結(jié)尾。
[\w-]+——“[\w-]”表示匹配“a-z A-Z 0-9 _”和“-”,“+”表示匹配前一個(gè)規(guī)則的字符數(shù)量≥1個(gè)。
(\.[\w-]+)*——“\.”是用轉(zhuǎn)義符表示“.”,“[\w-]+”和上文相同,“*”表示匹配前一個(gè)規(guī)則的字符數(shù)量≥0個(gè)。
@(qq|163|gmail)——“@”不需要轉(zhuǎn)義符,“()”中的這個(gè)規(guī)則用“|”表示“或”。
(\.[\w-]+)+——“(\.[\w-]+)”和上文相同,但不再是≥0個(gè),而是≥1個(gè),因此“*”改成“+”。

上面這個(gè)規(guī)則其實(shí)非常寬泛,允許的大致格式如下:
{內(nèi)容}[.{內(nèi)容}.{內(nèi)容}]@ {主機(jī)名}.{域名}[.{子域}.{子域}]
參考視頻:正則表達(dá)式-元字符匹配

實(shí)際上,電子郵件的規(guī)則其實(shí)并不統(tǒng)一,可以參考以下資料:
[1] 涉及漢字用戶名:https://blog.csdn.net/weixin_42698221/article/details/126635759
[2] 涉及更多限制:https://zhuanlan.zhihu.com/p/268816111
合法E-mail地址:
1. 必須包含一個(gè)并且只有一個(gè)符號(hào)“@”
2. 第一個(gè)字符不得是“@”或者“.”
3. 不允許出現(xiàn)“@.”或者.@
4. 結(jié)尾不得是字符“@”或者“.”
5. 允許“@”前的字符中出現(xiàn)“+”
6. 不允許“+”在最前面,或者“+@”