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