正則學習小記

吳靜儀發表於2018-11-28

最近做專案的時候涉及到一些資料校驗的部分,感覺自己對於正規表示式可以說是遺忘得非常徹底了…所以做一個比較完整的筆記來補充一下正則知識吧!


正規表示式(Regular Expression,在程式碼中常簡寫為regex、regexp或RE)使用單個字串來描述、匹配一系列符合某個句法規則的字串搜尋模式。

搜尋模式可用於文字搜尋和文字替換。

基礎部分

一、基本語義描述符

1、d(數字字元)與D(非數字字元)

2、w(字母數字下劃線)與W(非字母數字下劃線)

3、s(空白字元)與S(非空白字元)
空白字元包括製表符、換行符、垂直製表符、換頁符、回車符

4、.(任何字元,除n)

5、xXX(單位元組)與uXXXX(雙位元組)

二、定位描述符

1、^ (匹配字串的開始位置)

2、$(匹配字串的結束位置)

3、(空格)與B(非空格)

三、重複描述符

1、*(匹配0-∞次 等價於{0,})

2、+(匹配1-∞次 等價於{1,})

3、?(匹配0-1次 等價於{0,1})

4、{n}(匹配n次,n>0)

5、{n,}(匹配n-∞次,n>0)

6、{n,m}(匹配前一項至少n次,但是不能超過m次 ,n>0 且 n<=m)

四、選擇描述符

1、|(或操作)

2、[](IN操作,匹配所包含的任意一個字元

`[^]`非的情況

IN條件與或條件的區別:或條件是支援多字元,將一個段做為一個整體而IN條件只支援單字元

五、組(…)與非捕獲組(?:…)

正規表示式會將刮號裡的內容單獨儲存成一個組,並且匹配到的組可以反向引用,n是引用第n組

pattern.Add("\.(.{1,6})");//.開頭取6個字元
結果:Group[0]=.tansea Group[1]=tansea 

如果不想把刮號裡的內容儲存到組,可以用非捕獲組

pattern.Add("\.(?:.{1,6})");

搜尋模式:g,i,m

reg=new RegExp("pattern",["flags"])的方式比較好
pattern: 正規表示式
flags: g  全文查詢出現的所有pattern
      i  忽略大小寫
      m  多行查詢

附:常用的正規表示式以及校驗工具
https://c.runoob.com/front-en…

相關文章