.
[ ]
^
$
四個字元是所有語言都支援的正規表示式,所以這個四個是基礎的正規表示式。正則難理解因為裡面有乙個等價的概念,這個概念大大增加了理解難度,讓很多初學者看起來會蒙,如果把等價都恢復成原始寫法,自己書寫正則就超級簡單了,就像說話一樣去寫你的正則了:
等價:
?,*,+,\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。這被稱為貪婪匹配。有時,我們更需要懶惰匹配,...