【一】適用場景
郵箱驗證,手機號碼,驗證碼,替換敏感詞(罵人換成**),文件採集,表情替換技術(早期),模板引擎解析
【二】定界符
定界符就是用來定義邊界
注意:定界符不能用a-za-z0-9和 \和(),其他都可以用,但必須成對出現,又開始有結束
區分 \ 和 /,\ 為轉義字元, / 為正則字元
轉義字元:將 / 轉為字串形式,因為例如$str = '/ / /'這種形式的正則無法識別中間的/,所以需要 \ 轉義字元,將中間的 / 轉義為符號才能使用。
例如需要正則匹配 \ 時:
$str = '/ \/ /';或者$str = "/ '/' /";
或者修改定界符
$str = "@ / @"
定界符寫法舉例:
<?php$str = '% %';
$str = '^ ^';
$str = '$ $';
$str = '/ /';
$str = '@ @';
$str = '# #';
$str = '( )';//
錯誤$str = 'a a';//
錯誤?>
最常用的為/
【三】元字元
^,\d及$等符號代表了特定的匹配意義,我們稱之為元字元,常見元字元有
. 除換行符外任意字元;
\w a-za-z0-9(字母或數字、下劃線);-----word字母
\s 空白符\n,\t,\r,空格;-----------------spacing間隙
空白符是指空格符' '、水平製表符'\t'、垂直製表符'\v'、換行符'\n'、回車符'\r'、換頁符'\f'之類的字元
\d 0-9數字;---------------------------digit數字
\b 詞邊界(單詞的開始或結束);---------begin開始
^ 字串開始;
$ 字串結束;
[x] 匹配x字元,如匹配字串裡的a,b,c字元;
\w \w的轉義,除了a-za-z0-9之外的任意字元;
\s 匹配任何非空白的字元;
\d 0-9以外,匹配任何的字元;
\b 非邊界(匹配不是單詞開頭或結束位置的字元);
[^x] 匹配除了x以外任意字元,如[^abc]匹配除了abc以外任意字元
例如:[^0-9a-za-z]中因為有抑揚符,所以變成了匹配0-9a-za-z之外的字元
注意:
①當我們要匹配這些元字元的時候,我們需要用到字元轉義功能,同樣正規表示式裡面用 \ 來表示轉義,如要匹配 . 符號,則需要用 \. ,否則 . 會被解釋成「除換行符外的任意字元」。當然,要匹配 \ ,則需要寫成 \\
②連續的數字或字母可以用 – 符號連線起來,如 匹配所有的小寫字母,[1-5] 匹配 1 至 5 這 5 個數字
【四】正規表示式中的原子(最小單位)
原子是正規表示式的最小單位,乙個成立的正規表示式必須至少包含乙個原子
包含:空格,a-zaz,換行,0-9,中文,標點符號,特殊符號等全為原子
原子等價式:
\d 0-9
\w a-za-z0-9
\s \t,\n,\v,\r,空格
\d [^0-9]
\w [^a-za-z0-9]
\s [^\t\n\f\r]
【五】迴圈字元
正規表示式用一些重複規則來表達迴圈匹配
常用的重複如下:
* 重複0次或更多次;
+ 重複1次或更多次;
? 重複0次或1次;
有且只能重複n次;
至少重複n次;
可以重複n到m次;
<?phpif (preg_match("/\w?/", "2kkk6k3",$match
)) else
?>
【六】正則函式
preg_match() 第一次匹配成功後就會停止匹配,如果要實現全部結果的匹配,即搜尋到subject結尾處,則需使用 preg_match_all() 函式
(1)php匹配正則函式:preg_match()
preg_match() 函式用於進行正規表示式匹配,成功返回 1 true,否則返回 0 false。
preg_match() 匹配成功一次後就會停止匹配,如果要實現全部結果的匹配,則需使用preg_match_all() 函式。
語法:preg_match(正規表示式,匹配變數,儲存匹配結果的陣列)
<?phpif (preg_match("/it/i", "hitony",$match
)) else
?>
(2)preg_match_all()
preg_match_all() 函式用於進行正規表示式全域性匹配,成功返回整個模式匹配的次數(可能為零),如果出錯返回 false
【七】模式修正符
模式修正符是標記在整個正規表示式之外的,可以看著是對正規表示式的一些補充說明
常用的模式修正符如下:
i 模式中的字元將同時匹配大小寫字母
if (preg_match("/abc/i", "abc",$match)) else
m 字串視為多行
s 將字串視為單行,換行符作為普通字元
x 將模式中的空白忽略
e preg_replace() 函式在替換字串中對逆向引用作正常的替換,將其作為 php **求值,並用其結果來替換所搜尋的字串。
a 強制僅從目標字串的開頭開始匹配
d 模式中的 $ 元字元僅匹配目標字串的結尾
u 匹配最近的字串
u 模式字串被當成 utf-8
【八】或者(分枝)
分枝是指制定幾個規則,如果滿足任意一種規則,則都當作匹配成功。具體來說就是用 | 符號把各種規則分開,且條件從左至右匹配。
下面是乙個使用分枝的例子。
\d-\d|\d
【九】常用正則
郵箱,手機號,**,自定義格式,採集器
【十】正則練習
(1)必須以start開始,以end結束,中間有乙個或更多數字
<?php$pattern = '
/^start\d+end$/';
$string1 = "
start666end";
if(preg_match($pattern,$string1,$match))
else
?>
(2)必須以end結束
$pattern = '/start\d+end$/
';
(3)必須以start開始
$pattern = '/^start\d+end/
';
(4)匹配非數字,即字母。以字母開始以字母結束(只能匹配乙個)
$pattern = '/^[^0-9]$/';
$string1 = "a"
;//匹配成功
(5)匹配非數字,即字母。以字母開始以字母結束(能匹配多個)
$pattern = '/^[^0-9]+$/';
$string1 = "
abc";//
匹配成功
獨孤九劍之Lambda表示式公升級
今日發表了關於 c 3.0引入lambda表示式 的文章,大學好友小哲子,嫌棄科學家的語法不夠簡潔,故深入研究了一番,原來,lambda表示式,還可以更簡潔!using system using system.collections.generic using system.linq using s...
(獨孤九劍) 環境安裝
一 什麼是開發環境?php是開發語言,針對開發語言寫出的 通常需要在指定的軟體下執行。針對開發語言的軟體和 都稱為開發環境 二 windows環境安裝 1.伺服器種類 伺服器就是一台提供特殊服務的電腦,如 網頁伺服器 顯示網頁的伺服器 電子郵件伺服器 顯示電子郵件收發的伺服器 遊戲伺服器 顯示各個玩...
獨孤九劍與設計模式
且看 笑傲江湖 中風清揚的獨孤九劍 有進無退,招招都是進攻,使攻敵不得不守。雖只一劍九式,卻是變化無窮,學到後來,前後式融會貫通,更是威力大增。能料到他要出甚麼招,反招卻搶在他頭里。敵人手還沒提起,你長劍已指向他的要害,他再快也沒你快。料敵機先 和 活學活用 這八個字,正是這套劍法的精要所在。設計模...