正規表示式速記理解技巧

2021-06-26 23:05:54 字數 2957 閱讀 8227

.

[ ]

^

$

四個字元是所有語言都支援的正規表示式,所以這個四個是基礎的正規表示式。正則難理解因為裡面有乙個等價的概念,這個概念大大增加了理解難度,讓很多初學者看起來會蒙,如果把等價都恢復成原始寫法,自己書寫正則就超級簡單了,就像說話一樣去寫你的正則了:

等價:

?,*,+,\d,\w 都是等價字元

?等價於匹配長度

*等價於匹配長度 

+等價於匹配長度

\d等價於[0-9]

\w等價於[a-za-z_0-9]。

常用運算子與表示式:

^ 開始

() 域段

包含,預設是乙個字元長度

[^] 不包含,預設是乙個字元長度

匹配長度 

. 任何單個字元(\. 字元點)

| 或\ 轉義

$ 結尾

[a-z] 26個大寫字母

[a-z] 26個小寫字母

[0-9] 0至9數字

[a-za-z0-9] 26個大寫字母、26個小寫字母和0至9數字

, 分割

分割語法:

[a,h,t,w] 包含a或h或t或w字母

[a,h,t,w] 包含a或h或t或w字母

[0,3,6,8] 包含0或3或6或8數字

語法與釋義:

基礎語法 "^({})({})({})$"

正則字串 = "開始([包含內容])([包含內容])([包含內容])結束" 

?,*,+,\d,\w 這些都是簡寫的,完全可以用和{}代替,在(?:)(?=)(?!)(?<=)(?例項:

字串;tel:086-0666-88810009999

原始正則:"^tel:[0-9]-[0][0-9]-[0-9]$" 

速記理解:開始 "tel:普通文字"[0-9數字]"-普通文字"[0數字][0-9數字]"-普通文字"[0-9數字] 結束"

等價簡寫後正則寫法:"^tel:\d-[0]\d-\d$" ,簡寫語法不是所有語言都支援。

正規表示式應用——例項應用

1.驗證使用者名稱和密碼:("^[a-za-z]\w$")正確格式:"[a-z][a-z]_[0-9]"組成,並且第乙個字必須為字母6~16位;

2.驗證**號碼:("^(\\d-)\\d$")正確格式:***/***x-******x/******xx;

3.驗證手機號碼:"^1[3|4|5|8][0-9]\\d$";

4.驗證身份證號(15位或18位數字):"\\d[[0-9],0-9xx]";

6.只能輸入由數字和26個英文本母組成的字串:("^[a-za-z0-9]+$") ;

7.整數或者小數:^[0-9]+([.][0-9]+)$

8.只能輸入數字:"^[0-9]*$"。

9.只能輸入n位的數字:"^\\d$"。

10.只能輸入至少n位的數字:"^\\d$"。

11.只能輸入m~n位的數字:"^\\d$"。

12.只能輸入零和非零開頭的數字:"^(0|[1-9][0-9]*)$"。

13.只能輸入有兩位小數的正實數:"^[0-9]+(.[0-9])?$"。

14.只能輸入有1~3位小數的正實數:"^[0-9]+(\.[0-9])?$"。

15.只能輸入非零的正整數:"^\+?[1-9][0-9]*$"。

16.只能輸入非零的負整數:"^\-[1-9]0-9"*$。

17.只能輸入長度為3的字元:"^.$"。

18.只能輸入由26個英文本母組成的字串:"^[a-za-z]+$"。

19.只能輸入由26個大寫英文本母組成的字串:"^[a-z]+$"。

20.只能輸入由26個小寫英文本母組成的字串:"^[a-z]+$"。

21.驗證是否含有^%&',;=?$\"等字元:"[^%&',;=?$\x22]+"。

22.只能輸入漢字:"^[\u4e00-\u9fa5]$"。

23.驗證url:"^http://([\\w-]+\.)+[\\w-]+(/[\\w-./?%&=]*)?$"。

24.驗證一年的12個月:"^(0?[1-9]|1[0-2])$"正確格式為:"01"~"09"和"10"~"12"。

25.驗證乙個月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正確格式為;"01"~"09"、"10"~"29"和「30」~「31」。

26.獲取日期正規表示式:\\d[年|\-|\.]\\d[月|\-|\.]\\d日?

評注:可用來匹配大多數年月日資訊。

27.匹配雙

位元組字元(包括漢字在內):[^\x00-\xff]

評注:可以用來計算

字串的長度(乙個雙

位元組字元長度計2,ascii字元計1)

28.匹配空白行的正規表示式:\n\s*\r

評注:可以用來刪除空白行

29.匹配html標記的正規表示式:<(\s*?)[^>]*>.*?|<.*? />

評注:網上流傳的版本太糟糕,上面這個也僅僅能匹配部分,對於複雜的巢狀標記依舊無能為力

30.匹配首尾空白

字元的正規表示式:^\s*|\s*$

評注:可以用來刪除行首行尾的空白

字元(包括空格、

製表符、換頁符等等),非常有用的表示式

31.匹配**url的正規表示式:[a-za-z]+://[^\s]*

評注:網上流傳的版本功能很有限,上面這個基本可以滿足需求

32.匹配帳號是否合法(字母開頭,允許5-16

位元組,允許字母數字下劃線):^[a-za-z][a-za-z0-9_]$

評注:表單驗證時很實用

評注:qq號從10 000 開始

正規表示式速記

下面列舉了一些常用的正規表示式,僅僅是為了方便記憶和查詢 1.首先是元字元,究竟什麼是元字元呢?大家就把它理解成是正規表示式的關鍵字吧,它代表的不是符號本身。例如 0 d d表示 號碼,前面以0開頭的3到4位數字,中間是 後面7到8位數字.這裡面0代表的就是數字0,而 d是元字元代表的是一位數字,代...

正規表示式用法速記

hel.o 匹配 helo,不匹配 helo helllo hel o 匹配 heo helo hello hellllo hel o 匹配 helo hello,不匹配 heo hel?o 匹配 heo helo hel0 匹配 hello helo 匹配 helo 和 hello helo 匹配...

正規表示式技巧

正規表示式 貪婪與懶惰 當正規表示式中包含能接受重複的限定符時,通常的行為是 在使整個表示式能得到匹配的前提下 匹配盡可能多的字元。考慮這個表示式 a.b,它將會匹配最長的以a開始,以b結束的字串。如果用它來搜尋aabab的話,它會匹配整個字串aabab。這被稱為貪婪匹配。有時,我們更需要懶惰匹配,...