常用正则表达式—邮箱(Email)
常用正則表達(dá)式—郵箱(Email)
本文針對(duì)有一點(diǎn)正則基礎(chǔ)的同學(xué),如果你對(duì)正則一無所知,請(qǐng)移步“正則表達(dá)式30分鐘入門教程”學(xué)習(xí)。
要驗(yàn)證一個(gè)字符串是否為郵箱的話,首先要了解郵箱賬號(hào)的格式。我嘗試過在網(wǎng)上找出一個(gè)標(biāo)準(zhǔn)的格式,但是很遺憾我沒有找到。我也嘗試使用RFC標(biāo)準(zhǔn)來判斷郵箱的格式,但是也沒有結(jié)果。網(wǎng)上些博客說不應(yīng)該使用RFC標(biāo)準(zhǔn)來驗(yàn)證郵箱是否合法,有興趣的可以看看“is this email valid?”和“Don’t RFC-Validate Email Addresses”。據(jù)了解【參考】,現(xiàn)在用中文命名的郵箱也合法了,比如“楊元慶@聯(lián)想.中國(guó)”。
雖然沒有統(tǒng)一的郵箱賬號(hào)格式,但是所有郵箱都符合“名稱@域名”的規(guī)律。對(duì)于名稱和域名的字符限制,我們可以根據(jù)項(xiàng)目的情況定義一個(gè),比如只允許有英文、數(shù)字、下劃線等組成。下面舉例實(shí)現(xiàn)一些驗(yàn)證郵箱格式的正則表達(dá)式。
實(shí)例1、只允許英文字母、數(shù)字、下劃線、英文句號(hào)、以及中劃線組成
舉例:zhangsan-001@gmail.com
分析郵件名稱部分:
26個(gè)大小寫英文字母表示為a-zA-Z
數(shù)字表示為0-9
下劃線表示為_
中劃線表示為-
由于名稱是由若干個(gè)字母、數(shù)字、下劃線和中劃線組成,所以需要用到+表示多次出現(xiàn)
根據(jù)以上條件得出郵件名稱表達(dá)式:[a-zA-Z0-9_-]+
分析域名部分:
一般域名的規(guī)律為“[N級(jí)域名][三級(jí)域名.]二級(jí)域名.頂級(jí)域名”,比如“qq.com”、“www.qq.com”、“mp.weixin.qq.com”、“12-34.com.cn”,分析可得域名類似“**.**.**.**”組成。
“**”部分可以表示為[a-zA-Z0-9_-]+
“.**”部分可以表示為.[a-zA-Z0-9_-]+
多個(gè)“.**”可以表示為(.[a-zA-Z0-9_-]+)+
綜上所述,域名部分可以表示為[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+
最終表達(dá)式:
由于郵箱的基本格式為“名稱@域名”,需要使用“^”匹配郵箱的開始部分,用“$”匹配郵箱結(jié)束部分以保證郵箱前后不能有其他字符,所以最終郵箱的正則表達(dá)式為:
^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$
實(shí)例2、名稱允許漢字、字母、數(shù)字,域名只允許英文域名
舉例:楊元慶001Abc@lenovo.com.cn
分析郵件名稱部分:
漢字在正則表示為[u4e00-u9fa5]
字母和數(shù)字表示為A-Za-z0-9
通過分析得出郵件名稱部分表達(dá)式為[A-Za-z0-9u4e00-u9fa5]+
分析郵件域名部分
郵件部分可以參考實(shí)例1中的分析域名部分。
得出域名部分的表達(dá)式為[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+。
最終表達(dá)式:
我們用@符號(hào)將郵箱的名稱和域名拼接起來,因此完整的郵箱表達(dá)式為
^[A-Za-z0-9u4e00-u9fa5]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$
總結(jié)
以上是生活随笔為你收集整理的常用正则表达式—邮箱(Email)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 艺术生出国留学的条件有哪些(必备的是什么
- 下一篇: 第三章 存储器之高速缓冲存储器(超重点