正規表示式的總結

2021-07-10 16:04:50 字數 2540 閱讀 8869

在實際開發中經常會看到正規表示式的身影,這裡我來總結一下正規表示式中每一部分具體都是什麼含義,我這裡介紹的是php中的正規表示式,簡單的說php中有兩套正則,其功能差不多:

1)由pcre庫提供的函式,以preg_為字首命名。

2)由posix擴充套件提供的函式,以ereg_為字首命名。php5.3以後就不推薦使用這種函式庫了。下面介紹的主要是第一種正規表示式。

正規表示式的三個組成部分:分隔符、表示式和修飾符。

分隔符可以是除字母、數字、反斜線以及空白符以外的任何字元,通常用正斜線做分隔符。

下面介紹各個元字元的含義:

1.^ 匹配以某個字串開頭的字串,比如 ^once可以匹配onceabc、onceeee、once432等等。

2.$ 可以匹配以某個字串結尾的字串,比如once$ 匹配345once、abconce、tttonce等等。

3.^once$ 明白了前兩個這個就不難搞清楚了,只能匹配once。

4.如果說只有乙個」/once/」沒有任何其他符號呢, 那就可以匹配的多了。只要字串中含有once就可以匹配。比如2333once3232等等。

5.英文句號」.」可以匹配除了換行符\n外的所有單個字元,要注意是單個字元哦。比如正規表示式b.s,就可以匹配bis、bes、bus、b#s甚至b s等等。

6.中括號表示只可以匹配內包含的單個字元,注意也是單個字元。比如

b[euis]s,只能匹配 bes、bus、bis、bss四個,其他的都不能匹配了。

7.或操作字元」|」,完成兩項或多項之間的匹配,通常與( )搭配使用,比如b(a|o|u|oo)s就可以匹配bas、bos、bus、boos四個。如果使用就只能匹配其中的單個字元,而使用|則可以在單個與多個字元之間選擇。

8.表示其左邊的表示式出現0次或多次。比如pe*就匹配peaa、pee123、port等,左邊的表示式是e(緊挨著的那個)可以出現也可以不出現,port就沒有出現e,照樣可以匹配它。

9.+表示左邊的表示式出現1次或多次。比如pe+就匹配pe、pear、peeaa等等。+左右的表示式是e至少要出現1次或者多次才可以,這裡port就不能在匹配的上了。

10.?表示左邊的表示式出現0次或1次。比如pe?匹配pe、port、pear等。?左邊的表示式e只能出現0次或1次,所以不能匹配peear了。

11.表示其左邊的表示式出現n次,比如a匹配的是aaa、123aaa33、aaaasfds等等。

12.表示其左邊的表示式出現n次或多次。即至少n次,比如a匹配aaa、aaaaadfa等等。

13.表示其左邊的表示式出現n-m次。即至少出現n次至多出現m次,比如a匹配a 、aa、aaa、aadfgdsd等等。

14.有時我們會遇到\w,可以匹配任意單個字母或數字或下劃線或漢字。

15.\w 正好是\w的反義詞,表示非字母數字下劃線漢字的任意單個字元。

16.\d 表示任意單個數字。同理 \d表示非數字外的任意單個字元。

17.\s 匹配不可見字元,比如空格製表等。同理$表示可見字元。

18.\b 匹配字串邊界,同理\b匹配非邊界。

19.\a 匹配以某個字串開頭的字串。\z 匹配以某個字串結尾的字串。這裡可能有人要有疑問了,這和^和$有什麼區別呢,原來多行模式下^和\$會對每行的行首和行尾也進行匹配。而\a和\z則只匹配字串的開頭和結尾。

常用的模式修飾符:

i 表示忽視大小寫就行匹配。

m 多行模式,剛才已經介紹過了,正常情況下^和$只匹配字串的開頭和結尾,如果是多行模式,那麼也會匹配行首和行尾。即每一行的開頭就是^,結尾就是$。

s 單行模式,表示忽視換行符,把換行符也當做普通字元來對待。變化最大的是 . 這個符號,正常情況下它匹配的是除換行符以外的任意單個字元,如果是單行模式,那麼 . 也可以匹配換行符\n了。

u 懶惰模式,表示盡量可能少的匹配。

d 結尾限制 這種模式下,結尾不能出現換行符。正常情況下once$是可以匹配once\n這樣的字串的,如果是d模式下,這種情況會匹配失敗

u 中文修飾符,如果有中文情況下,通常使用這種模式。

介紹到這裡,正規表示式的基本語法就介紹完了,實際程式設計中我們遇到的正規表示式無非就是上述幾種形式的組合版,即使這樣我們理解起來也不是那麼簡單。需要通過我們多分析他們才能慢慢的提高如何去書寫正確的正規表示式。下面舉簡單的幾個例子介紹一些稍微複雜的正規表示式並分析:

1.^[a-za-z0-9_]$匹配所有的單個或多個由字母數字下劃線組成的字串。

2.^[0-9]$匹配所有的正整數。

3.^-[0-9]\$匹配所有的負數,負號前面要加轉義字元「\」.

4.驗證是否為合法的手機號碼的正規表示式:

^[1][358][0-9]\$ 第一位必須是1,第二位只能是358,後面9位可以是任意組合。

5.驗證是否為合法的郵箱格式的正規表示式:

^([a-za-z0-9-_])+@[a-za-z0-9-_]+(.[0-9a-za-z])+\$

6.ip位址的正規表示式:

((2[0-4]\d | 25[0-5] | [01]?\d\d?).)(2[0-4]\d | 25[0-5] | [01]?\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...

正規表示式總結

正規表示式用於操作字串的規則,這些規則由一些符號所組成。使用正規表示式可以進行更複雜的操作,而且這種複雜的操作要比方法短的多。功能 1,匹配。使用的是string類中的matches方法。2,切割。使用的string類split方法。3,替換。4,查詢。1,將正則規則通過pattern類中的stat...

正規表示式總結

常用正規表示式總結 w w w 驗證 號碼 d d d 正確格式為 x x xx x xx x 和 xx 驗證身份證號 15位或18位數字 d d 驗證一年的12個月 0?1 9 1 0 2 正確格式為 01 09 和 1 12 驗證乙個月的31天 0?1 9 1 2 0 9 30 31 正確格式為...