本文針對有一點正則基礎的同窗,若是你對正則一無所知,請移步「正則表達式30分鐘入門教程」學習。html
要驗證一個字符串是否爲郵箱的話,首先要了解郵箱帳號的格式。我嘗試過在網上找出一個標準的格式,可是很遺憾我沒有找到。我也嘗試使用RFC標準來判斷郵箱的格式,可是也沒有結果。網上些博客說不該該使用RFC標準來驗證郵箱是否合法,有興趣的能夠看看「is this email valid?」和「Don’t RFC-Validate Email Addresses」。據瞭解【參考】,如今用中文命名的郵箱也合法了,好比「楊元慶@聯想.中國」。正則表達式
雖然沒有統一的郵箱帳號格式,可是全部郵箱都符合「名稱@域名」的規律。對於名稱和域名的字符限制,咱們能夠根據項目的狀況定義一個,好比只容許有英文、數字、下劃線等組成。下面舉例實現一些驗證郵箱格式的正則表達式。
學習
舉例:zhangsan-001@gmail.com
分析郵件名稱部分:this
a-zA-Z
0-9
_
-
+
表示屢次出現 根據以上條件得出郵件名稱表達式:[a-zA-Z0-9_-]+
分析域名部分:.net
通常域名的規律爲「[N級域名][三級域名.]二級域名.頂級域名」,好比「qq.com」、「www.qq.com」、「mp.weixin.qq.com」、「12-34.com.cn」,分析可得域名相似「**
.**
.**
.**
」組成。code
[a-zA-Z0-9_-]+
\.[a-zA-Z0-9_-]+
(\.[a-zA-Z0-9_-]+)+
綜上所述,域名部分能夠表示爲[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+
htm
最終表達式:
因爲郵箱的基本格式爲「名稱@域名」,須要使用「^」匹配郵箱的開始部分,用「$」匹配郵箱結束部分以保證郵箱先後不能有其餘字符,因此最終郵箱的正則表達式爲:
^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$
blog
舉例:楊元慶001Abc@lenovo.com.cn教程
分析郵件名稱部分:字符串
[\u4e00-\u9fa5]
A-Za-z0-9
[A-Za-z0-9\u4e00-\u9fa5]+
分析郵件域名部分
郵件部分能夠參考實例1
中的分析域名部分
。
得出域名部分的表達式爲[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+
。
最終表達式:
咱們用@符號將郵箱的名稱和域名拼接起來,所以完整的郵箱表達式爲
^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$