經常使用正則表達式—郵箱(Email)

經常使用正則表達式—郵箱(Email)

 本文針對有一點正則基礎的同窗,若是你對正則一無所知,請移步「正則表達式30分鐘入門教程」學習。html

 要驗證一個字符串是否爲郵箱的話,首先要了解郵箱帳號的格式。我嘗試過在網上找出一個標準的格式,可是很遺憾我沒有找到。我也嘗試使用RFC標準來判斷郵箱的格式,可是也沒有結果。網上些博客說不該該使用RFC標準來驗證郵箱是否合法,有興趣的能夠看看「is this email valid?」和「Don’t RFC-Validate Email Addresses」。據瞭解【參考】,如今用中文命名的郵箱也合法了,好比「楊元慶@聯想.中國」。正則表達式

 雖然沒有統一的郵箱帳號格式,可是全部郵箱都符合「名稱@域名」的規律。對於名稱和域名的字符限制,咱們能夠根據項目的狀況定義一個,好比只容許有英文、數字、下劃線等組成。下面舉例實現一些驗證郵箱格式的正則表達式。 

學習

實例一、只容許英文字母、數字、下劃線、英文句號、以及中劃線組成

舉例:zhangsan-001@gmail.com 
分析郵件名稱部分:this

  • 26個大小寫英文字母表示爲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_-]+)+$

相關文章
相關標籤/搜索