正規表示式詳解
正規表示式有兩個特殊的符號'^'和'$'。他們的作用是分別指出一個字串的開始和結束,下面進行語法的詳細介紹:
一、行定位符(^和$)
行定位符就是用來描述字串的邊界。“^”表示行的開始;“$”表示行的結尾。如:
^tm : 該表示式表示要匹配字串tm的開始位置是行頭,如tm equal Tomorrow Moon就可以匹配
tm$ : 該表示式表示要匹配字串tm的位置是行尾,Tomorrow Moon equal tm匹配。
如果要匹配的字串可以出現在字串的任意部分,那麼可以直接 寫成 :tm
二、單詞定界符(\b、\B)
單詞分界符\b,表示要查詢的字串為一個完整的單詞。如:\btm\b
還有一個大寫的\B,意思和\b相反。它匹配的字串不能是一個完整的單詞,而是其他單詞或字串的一部分。如:\Btm\B
三、字元類([ ])
方括號表示某些字元允許在一個字串中的某一特定位置出現:
注意事項:
1.為了逐字表達,你必須在
"^.$()¦*+?{\"這些字元前加上轉移字元'\'.
2.請注意在方括號中,不需要轉義字元,
正規表示式是區分大小寫的。
如果要忽略大小寫可使用方括號表示式“[]”。只要匹配的字元出現在方括號內,即可表示匹配成功。但要注意:一個方括號只能匹配一個字元。例如,要匹配的字串tm不區分大小寫,那麼該表示式應該寫作如下格式:[Tt][Mm]
POSIX風格的預定義字元類如表所示:
四、選擇字元(|)
還有一種方法可以實現上面的匹配模式,就是使用選擇字元(|)。該字元可以理解為“或”,如上例也可以寫成 (T|t)(M|m),該表示式的意思是以字母T或t開頭,後面接一個字母M或m。
使用“[]”和使用“|”的區別在於“[]”只能匹配單個字元,而“|”可以匹配任意長度的字串。如果不怕麻煩,上例還可以寫為 :TM|tm|Tm|tM
五、連字元(-)
變數的命名規則是隻能以字母和下劃線開頭。但這樣一來,如果要使用正規表示式來匹配變數名的第一個字母,要寫為 :[a,b,c,d…A,B,C,D…]
這無疑是非常麻煩的,正規表示式提供了連字元“-”來解決這個問題。連字元可以表示字元的範圍。如上例可以寫成 :[a-zA-Z]
六、排除字元([^])
上面的例子是匹配符合命名規則的變數。現在反過來,匹配不符合命名規則的變數,正規表示式提供了“^”字元。這個元字元在前面出現過,表示行的開始。而這裡將會放到方括號中,表示排除的意思。
例如:[^a-zA-Z],該表示式匹配的就是不以字母和下劃線開頭的變數名。
七、限定符(? * + {n,m})
對於重複出現字母或字串,可以使用限定符來實現匹配。限定符主要有6種,如表所示:
例如:
"ab*":表示一個字串有一個a後面跟著零個或若干個b。("a",
"ab", "abbb",……);
"ab+":表示一個字串有一個a後面跟著至少一個b或者更多;
"ab?":表示一個字串有一個a後面跟著零個或者一個b;
"a?b+$":表示在字串的末尾有零個或一個a跟著一個或幾個b。也可以使用{}來表示
其實:'*','+'和 '?'相當於"{0,}","{1,}"和"{0,1}"。
八、點號字元(.)
點字元(.)可以匹配出換行符外的任意一個字元。
注意:是除了換行符外的、任意的一個字元。如匹配以s開頭、t結尾、中間包含一個字母的單詞。
格式如下: ^s.t$,匹配的單詞包括:sat、set、sit等。
再舉一個例項,匹配一個單詞,它的第一個字母為r,第3個字母為s,最後一個字母為t。能匹配該單詞的正規表示式為:^r.s.*t$
九、轉義字元(\)
正規表示式中的轉移字元(\)和PHP中的大同小異,都是將特殊字元(如“.”、“?”、“\”等)變為普通的字元。舉一個IP地址的例項,用正規表示式匹配諸如127.0.0.1這樣格式的IP地址。如果直接使用點字元,格式為:[0-9]{1,3}(.[0-9]{1,3}){3}
這顯然不對,因為“.”可以匹配一個任意字元。這時,不僅是127.0.0.1這樣的IP,連127101011這樣的字串也會被匹配出來。所以在使用“.”時,需要使用轉義字元(\)。修改後上面的正規表示式格式為: [0-9]{1,3}(\.[0-9]{1,3}){3}
十、反斜線(\)
除了可以做轉義字元外,反斜線還有其他一些功能。反斜線可以將一些不可列印的字元顯示出來,如表所示:
還可以指定預定義字符集,如表所示:
反斜線還有一種功能,就是定義斷言,其中已經瞭解過了\b、\B,其他如表所示:
十一、括號字元(())
小括號字元的第一個作用就是可以改變限定符的作用範圍,如“|”、“*”、“^”等。來看下面的一個表示式。
(thir|four)th,這個表示式的意思是匹配單詞thirth或fourth,如果不使用小括號,那麼就變成了匹配單詞thir和fourth了。
小括號的第二個作用是分組,也就是子表示式。如(\.[0-9]{1,3}){3},就是對分組(\.[0-9]{1,3})進行重複操作。後面要學到的反向引用和分組有著直接的關係。
十二、反向引用
十三、模式修飾符
模式修飾符的作用是設定模式。也就是規定正規表示式應該如何解釋和應用。
不同的語言都有自己的模式設定,PHP中的主要模式如表所示:
重要點:
1.\w:用於匹配字母,數字或下劃線字元
例如:/校驗密碼:只能輸入6-20個字母、數字、下劃線
2.\d:用於匹配從0到9的數字
例如:校驗普通電話、傳真號碼:可以“+”或數字開頭,可含有“-” 和 “ ”
3. //校驗純中文字元 /^[\u4E00-\u9FA5]+$/
"^\d+$" //非負整數(正整數 + 0)
"^[0-9]*[1-9][0-9]*$" //正整數
"^((-\d+)|(0+))$" //非正整數(負整數 + 0)
"^-[0-9]*[1-9][0-9]*$" //負整數
"^-?\d+$" //整數
"^\d+(\.\d+)?$" //非負浮點數(正浮點數 + 0)
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮點數
"^((-\d+(\.\d+)?)|(0+(\.0+)?))$" //非正浮點數(負浮點數 + 0)
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //負浮點數
"^(-?\d+)(\.\d+)?$" //浮點數
"^[A-Za-z]+$" //由26個英文字母組成的字串
"^[A-Z]+$" //由26個英文字母的大寫組成的字串
"^[a-z]+$" //由26個英文字母的小寫組成的字串
"^[A-Za-z0-9]+$" //由數字和26個英文字母組成的字串
"^\w+$" //由數字、26個英文字母或者下劃線組成的字串
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email地址
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$" //url
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年
"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" //Emil
"(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?" //電話號碼
"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$" //IP地址
^([0-9A-F]{2})(-[0-9A-F]{2}){5}$ //MAC地址的正規表示式
^[-+]?\d+(\.\d+)?$ //值型別正規表示式
相關文章
- 詳解正規表示式
- Python正規表示式詳解Python
- Linux正規表示式詳解Linux
- 詳解 Python 正規表示式Python
- 正規表示式分組詳解
- MySQL-正規表示式詳解MySql
- Python正規表示式 findall函式詳解Python函式
- Python 正規表示式模組詳解Python
- 正規表示式詳解及實戰
- python爬蟲 正規表示式詳解Python爬蟲
- js正規表示式常用函式詳解(續)JS函式
- Python3之正規表示式詳解Python
- 正規表示式分組例項詳解
- 正規表示式教程之位置匹配詳解
- Oracle中的正規表示式(及函式)詳解Oracle函式
- PHP正規表示式模式修飾符詳解PHP模式
- shell 正規表示式詳細整理
- oracle正規表示式regexp_like的用法詳解Oracle
- 正規表示式教程之匹配一組字元詳解字元
- 正規表示式教程之匹配單個字元詳解字元
- 正規表示式
- 正規表示式.
- 例項程式碼詳解正規表示式匹配換行
- 正規表示式學習教程之回溯引用backreference詳解
- 【正規表示式】常用的正規表示式(數字,漢字,字串,金額等的正規表示式)字串
- 正規表示式教程之操作符及說明詳解
- php –正規表示式PHP
- 【Linux】正規表示式Linux
- 【JavaScript】正規表示式JavaScript
- URL正規表示式
- 正規表示式 split()
- 初探正規表示式
- 正規表示式 test()
- 正規表示式(?!)作用
- 正規表示式 {n,}
- SQL正規表示式SQL
- 正規表示式(java)Java
- Python——正規表示式Python
- PHP正規表示式PHP