正規表示式

2021-08-15 16:42:52 字數 2903 閱讀 4690

正規表示式-語法

字元

描述

舉例

^^號匹配字串的開頭(一行);

在[ ]中使用的時候,表示不接受該字元集合

^123:匹配以123開頭的字串

[^a-z]:匹配a-z以外的字符集

$$號匹配字串的結尾(一行)

abc$:匹配以abc結尾的字串

\a代表輸入的開始位置(一段,不是一行)

\z代表輸入的結束位置(一段,不是一行)

++號前面的字元必須至少出現1次或多次

runoo+b:可匹配runoob/runooob/runooooooob

**號前面的字元至少出現0次、1次或多次

runoo*b:可匹配runob/runoob/runooooooob

??號前面的字元最多只能出現一次;

當該字元緊跟在其他限定符(*,+,?,,)後面時,匹配模式是非貪婪的,即盡可能少的匹配所搜尋的字串

colou?r:可匹配color/colour

o+?:匹配單個字元o,而o+才匹配多個o

.匹配單個任意字元,

要匹配包括 '\n' 在內的任何字元,請使用像"

(.|\n)

"的模式。

匹配前乙個字元n次

o:匹配"food"中的兩個o

匹配前乙個字元至少n次

匹配前乙個字元n到m次

\d數字

\d非數字

\s空格

\s非空格

\w匹配字母、數字、下劃線字元,等價於:[a-za-z0-9_]

\w匹配非字母、數字、下劃線字元,等價於:[^a-za-z0-9_]

\b匹配字邊界處的字元,即字與空格間的位置

\bapt匹配aptitude中的apt

\b非字邊界匹配

\bapt匹配chapter中的apt

\num

後向引用,num是乙個正整數,

對所獲取的匹配的引用

.*?\1

>:\

1代表前面的子模式([1-6])的匹配結果

x|y匹配x或y

[a-z]

匹配字元範圍,如:字母a-z

(pattern)

圓括號,匹配pattern子模式,並獲取這一匹配結果,可用於後向引用

(?:pattern)

匹配pattern但不獲取這一結果,不能用於後向引用

(?=pattern)

正向預查,

在任何匹配 pattern 的字串開始處匹配查詢字串(非獲取匹配,僅作為條件限制)

windows (?=95|98|nt|2000)' 能匹配 "windows 2000" 中的 "windows" ,但不能匹配 "windows 3.1" 中的 "windows

(?!pattern)

負向預查,在任何不匹配 pattern 的字串開始處匹配查詢字串(非獲取匹配,僅作為條件限制)

'windows (?!95|98|nt|2000)' 能匹配 "windows 3.1" 中的 "windows",但不能匹配 "windows 2000" 中的 "windows"

\f匹配乙個換頁符

\n匹配乙個換行符

\r匹配乙個回車符

\t匹配乙個製表符

\v匹配乙個垂直製表符

\xn匹配 n,其中 n 為十六進製制轉義值,十六進製制轉義值必須為確定的兩個數字長

'\x41' 匹配 "a"

\n標識乙個八進位制轉義值或乙個向後引用。如果 \n 之前至少 n 個獲取的子表示式,則 n 為向後引用。否則,如果 n 為八進位制數字 (0-7),則 n 為乙個八進位制轉義值。

\nm標識乙個八進位制轉義值或乙個向後引用。如果 \nm 之前至少有 nm 個獲得子表示式,則 nm 為向後引用。如果 \nm 之前至少有 n 個獲取,則 n 為乙個後跟文字 m 的向後引用。如果前面的條件都不滿足,若 n 和 m 均為八進位制數字 (0-7),則 \nm 將匹配八進位制轉義值 nm。

\nml

如果 n 為八進位制數字 (0-3),且 m 和 l 均為八進位制數字 (0-7),則匹配八進位制轉義值 nml。

\un匹配 n,其中 n 是乙個用四個十六進製制數字表示的 unicode 字元。

漢字:^[\u4e00-\u9fa5]$

正規表示式-運算子優先順序

優先順序由高到低排序為:

運算子

描述

\轉義符

(),(?:),(?=),

圓括號和方括號

*,+,?,,,

限定符^,$,\任何元字元、任何字元

定位點和序列(即:位置和順序)

|替換,"或"操作

字元具有高於替換運算子的優先順序,使得"m|food"匹配"m"或"food"。若要匹配"mood"或"food",請使用括號建立子表示式,從而產生"(m|f)ood"。

常用的正規表示式

1、長度為8-10的使用者密碼(以字母開頭、數字、下劃線)

^[a-za-z]\w$

2、驗證輸入只能是漢字 :

^[\u4e00-\u9fa5]$

3、電子郵箱驗證:

^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

4、url位址驗證:

5、簡單的身份證號驗證:

\d|\d$

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 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 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...