正規表示式 貪婪匹配 轉義

2021-07-25 16:00:14 字數 1783 閱讀 1563

preg_match(pa

terr

n,str);判斷是否匹配

preg_replace(pa

tter

n,replace,st

r);將

符合的部

分替換為

replace,其中()內為一部分

.        此處占有乙個字元

* 匹配前面的》=0個字元

+ 匹配前面的》=1個字元

? 匹配前面的0個或者1個字元

[abc,,] 匹配1個字元

(a|b|c) 匹配乙個,對於|在最外邊加(),不用每個都加,例如(abdk|abd'fj)這樣

匹配前面的n個字元

匹配前面的至少n個字元,小於m個

匹配前面的》=n個字元

\ 轉義

\w [0-9

a-za-z]還有下劃線,外文

\d [0-9]

\s 空白字元

() 是為了提取匹配的字串。表示式中有幾個()就有幾個相應的匹配字串。

(a|b\c)? 匹配圓括號內0次或者1次

.* 匹配任何字元或者空白

郵箱

根據規則來:郵箱名可能包含-+.這樣的字元,可以將\w放在中

\w+

[\w+-.]

*@[a-za

-z0-9]

+\.[a-za-z]

匹配 [email protected]

ip4

/^((\d|1\d|2[0-4]\d|25\d).)(\d|1\d|2[0-4]\d|25\d)$/

驗證身份證號(15位或18位數字)

/^\d|\d$/

非0負整數

/^-[1-9]\d*$/」;

驗證使用者密碼:以字母開頭,長度在6~18之間,只能包含字元、數字和下劃線

/^[a-za-z][a-za-z0-9_]$/

驗證是否含有^%&』,;=?$\」等字元, 這一特殊意義的字元要加上\

/[\^%&』,;=?\$\」]+/ 這樣^前面加上轉義

正數、負數、和小數

/^-? \d+( .\d+)?$/

浮點數

/^-?\d+.\d+$/

開頭或結尾有空白\s

/(^\s.*|.*\s

$)/

使用者名稱:中文

貪婪匹配和非貪婪匹配

對於量詞,例如 + ? *

貪婪匹配:在匹配成功的情況下,盡可能多的匹配;

非貪婪匹配:忽略量詞,在量詞後面加上? 。在匹配成功的情況下,盡可能少的匹配;

轉義:

addslashes 往資料庫中傳送資料,對於預定義的符號(』」 null \)加上\轉義

htmlspecialchars 將字串轉為html實體,對於預定義的符號(下面五種)轉換為html實體。

& (和號) 成為&

」 (雙引號) 成為"

』 (單引號) 成為'

< (小於) 成為<

(大於) 成為》可以防止xss攻擊。

正規表示式貪婪匹配

個人感覺對正規表示式理解的還算多的,貪婪模式也用過,但是最近匹配位址資訊的時候老是出錯 如下 寧波 鄞州 21.59901313997095 29.80867802546617 寧波鄞州區鄞縣大道萬科桂語裡小區 盲點小區 編號 fg 2019 寧波 鄞州 21.59901313997095 29.8...

正規表示式 貪婪匹配

例如 booooooaaobbbbbyy 匹配規則 b.b 匹配結果 bbb 個人理解,根據正規表示式會盡可能多的匹配字串,所以,第一次匹配時會將整個字串匹配下來,並記錄回溯點 最後乙個y 然後繼續根據匹配規則進行匹配,即匹配b,結果引擎發現沒有b,於是進行回溯,會將之前匹配的字串從右到左 吐 出乙...

正規表示式 非貪婪匹配

先來看個例子 final static string text 999www.chinoukin.com 888 final static string regex public static void main string args 預想輸出結果 999 b 888 b 實際輸出結果 999 b...