1. 程式人生 > >基礎正則表示式-入門

基礎正則表示式-入門

開發之路,羊腸九曲,荊棘密佈,幸得高人指點,前輩填坑,一路謹小慎微,終得工程圓滿;其間填坑之經驗,開路之歷程,皆為精華,不可棄之;記錄於此,以便事後回顧,亦想於有相關開發疑惑之同學做參考之用,文中如若有錯,懇請雅正,不勝感激。

基本的正則表示式

在使用正則表示式的時候,我們可以很方便的完成一些字串的操作,比如:驗證、查詢、替換、分割等等。

正則表示式主要有表示式(expressions)量詞(quantifiers)、**斷言(assertions)**組成。

表示式

最簡單的表示式就是一個字元。

字符集可以使用表示式如“[AEIOU]”,表示匹配所有大寫母音字母;“[^AEIOU]”則表示匹配所有非母音字母;還有“[a-z]”表示所有的小寫英文字母。

量詞

量詞說明表示式出現的次數,如**“x[1,2]” ** 表示“x”可以至少出現一次,至多出現兩次。

量詞 含義
E? 匹配0次或1次
E+ 匹配1次或多次
E* 匹配0次或多次
E[n] 匹配n次
E[n,] 匹配至少n次
E[,m] 匹配最多m次
E[n,m] 匹配0至少n次,最多m次

斷言

“^”、“$”、“\b”等都是正則表示式的斷言

符號 含義
^ 表示在字串開頭進行匹配
$ 表示在字串結尾進行匹配
\b 單詞邊界
\B 非單詞邊界
(?=E) 表示表示式後邊緊隨E才進行匹配
(?!E) 表示表示式後邊不跟隨E才進行匹配

例如:
“use(?=E\s+namespace)” 表示只有在use後邊出現 namespace的時候才進行匹配

“use(?!E\s+namespace)” 表示只有在use後邊不是 namespace的時候才進行匹配

“use\s+namespace” 表示匹配“use namespace”

示例-匹配郵箱

**匹配郵箱: ** [email protected]

郵箱名 **
主要是字母或者數字或者下劃線中劃線組成
這樣表示式應該為:
[a-zA-Z0-9_-]+ **

域名 **
一般的域名或有多個分級域名,如“codeartisan.top”,'www.codeartisan.top",“vip.www.codeartisan.top”,
總結下來域名部分應該為
“*.*.*.*” ** 這樣
表示式應該為:**[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+

**最終表示式: **
 郵箱的基本格式為“名稱@域名”,需要使用“^”匹配郵箱的開始部分,用“$”匹配郵箱結束部分以保證郵箱前後不能有其他字元,所以最終郵箱的正則表示式為:

^[a-zA-Z0-9_-][email protected][a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$