常用的正規表示式知識點與常見的正則匹配模式

2021-08-12 00:19:10 字數 3212 閱讀 6262

1、分隔符

分隔符可以是除了特殊字元以外的任何字元,常見的分隔符有:/、#、~等。例:/中間寫正規表示式/

2、元字元

^ :匹配開頭 例:/^ve/匹配以ve開頭的

$:匹配結尾 例:/ve$/匹配以ve結尾的

. :用於匹配除換行符之外的所有字元

+ :用來匹配元字元前的字元出現1次或者多次

* :用來匹配元字元前的字元出現0次或者多次

? :用來匹配元字元前的字元出現0次或者1次

{} :用來精確指定匹配元字元出現的次數

:用來匹配""之中出現過的字元

() :用來控制優先順序,括號內匹配的結果作為模式子串

| :表示或者的意思,可以是某個字元或者另乙個字串

\ :反斜槓用於轉義特殊字元

[^] :如果在""中出現了"^",代表本表示式不匹配""內出現的字元

[a-z] :"-"此時表示取值範圍,可取a到z的26個字母

\w:用於匹配字母,數字或下劃線字元,相當於"/[a-za-z0-9_]/"

\d:用於匹配從0到9的數字,相當於"/[0-9]/"

\s:用於匹配單個的空格符

3、修飾符

i :如果在修飾符中加上"i",則正則將會取消大小寫敏感性

m :如果在修飾符中加上"m",那麼開始和結束將會指字串的每一行:每一行的開頭就是"^",結尾就是"$"

s:如果在修飾符中加入"s",那麼預設的"."代表除了換行符以外的任何字元將會變成任意字元,也就是包括換行符

x:如果加上該修飾符,表示式中的空白字元將會被忽略

1、正規表示式中的 .*? 或 .+? 是什麼意思?

.*和.+表示貪婪匹配:在滿足匹配時,匹配盡可能長的字串,預設情況下,採用貪婪匹配

例如:如果用正則匹配src中內容非懶惰模式匹配,正規表示式為src=".*"

匹配結果是:src="test.jpg" width="60px" height="80px"

意思是從="往後匹配,直到最後乙個"匹配結束

.*?和.+?表示非貪婪匹配:在滿足匹配時,匹配盡可能短的字串,使用?來表示非貪婪匹配

例如:如果採用懶惰模式正則,正規表示式為src=".*?"

匹配結果是:src="test.jpg"

因為匹配到第乙個"就結束了一次匹配,不會繼續向後匹配

幾個常用的非貪婪匹配模式

*? 重複任意次,但盡可能少重複

+? 重複1次或多次,但盡可能少重複

?? 重複0次或1次,但盡可能少重複

? 重複n到m次,但盡可能少重複

? 重複n次以上,但盡可能少重複

2、php**驗證郵箱位址的合法性

function checkemail($email) 

if (substr_count($email, "@") > 1)

$pattern = '/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/';

$rs = preg_match($pattern, $email, $matches);

//var_dump($matches);

return (bool)$rs;

}

(一)校驗數字的表示式

1 數字:^[0-9]*$

2 n位的數字:^\d$

3 至少n位的數字:^\d$

4 m-n位的數字:^\d$

5 零和非零開頭的數字:^(0|[1-9][0-9]*)$

6 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(.[0-9])?$

7 帶1-2位小數的正數或負數:^(\-)?\d+(\.\d)?$

8 正數、負數、和小數:^(\-|\+)?\d+(\.\d+)?$

9 有兩位小數的正實數:^[0-9]+(.[0-9])?$

10 有1~3位小數的正實數:^[0-9]+(.[0-9])?$

11 非零的正整數:^[1-9]\d*$ 或 ^([1-9][0-9]*)$ 或 ^\+?[1-9][0-9]*$

12 非零的負整數:^\-[1-9]0-9"*$ 或 ^-[1-9]\d*$

13 非負整數:^\d+$ 或 ^[1-9]\d*|0$

14 非正整數:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$

15 非負浮點數:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$

16 非正浮點數:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$

17 正浮點數:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

18 負浮點數:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$

19 浮點數:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

(二)、校驗字元的表示式

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

2 英文和數字:^[a-za-z0-9]+$ 或 ^[a-za-z0-9]$

3 長度為3-20的所有字元:^.$

4 由26個英文本母組成的字串:^[a-za-z]+$

5 由26個大寫英文本母組成的字串:^[a-z]+$

6 由26個小寫英文本母組成的字串:^[a-z]+$

7 由數字和26個英文本母組成的字串:^[a-za-z0-9]+$

8 由數字、26個英文本母或者下劃線組成的字串:^\w+$ 或 ^\w$

9 中文、英文、數字包括下劃線:^[\u4e00-\u9fa5a-za-z0-9_]+$

10 中文、英文、數字但不包括下劃線等符號:^[\u4e00-\u9fa5a-za-z0-9]+$ 或 ^[\u4e00-\u9fa5a-za-z0-9]$

11 可以輸入含有^%&',;=?$\"等字元:[^%&',;=?$\x22]+

12 禁止輸入含有~的字元:[^~\x22]+

正規表示式知識點

re.match與re.search的區別 re.match只匹配字串的開始,如果字串開始不符合正規表示式,則匹配失敗,函式返回none 而re.search匹配整個字串,直到找到乙個匹配。flags 標誌位,用於控制正規表示式的匹配方式,如 是否區分大小寫,多行匹配等等 import re s 1...

正規表示式知識點

正則的知識點 1.建立例項 var reg new regexp pattern,flag d g 2.flag 識別符號 1.i 忽略大小寫匹配 2.m 多行匹配 3.g 全域性匹配 應用與所有,而不是找到第乙個就停止 3.第一段知識點 1.xyz xyz中任意乙個字元 等價於 x z 2.xyz...

正規表示式知識點總結

1.正規表示式 符合一定規則的表示式。2.作用 用於專門操作字串。3.特點 用一些特定的符號來表示一些 操作,這樣可以簡化書寫。所以學習正規表示式,就是在學習一些特殊符號的使用。4.好處 可以簡化對字串的複雜操作。5.弊端 符號定義越多,正則越長,閱讀性越差。1.匹配 boolean matches...