文章目錄
- 一、概念
- 二、作用
- 三、語法規則
- 3.1定義規則
- 3.2符號簡介
- 3.3preg_match用法詳解
- 3.4詳解元字符
- 3.4.1 \d和[0-9]
- 3.4.2 \D和[^0-9]
- 3.4.3^和$
- 3.4.4*代表出現0次或者多次
- 3.4.5+代表出現1次或者多次
- 3.4.5?代表出現0次或者1次
- 3.4.6{n}
- 3.4.7{n,}
- 3.4.8{n,m}
- 3.4.9點號(.)
- 3.5.0 x|y
- 3.5.1 [xyz]
- 3.5.2 [^xyz]
- 3.5.3\b
- 3.5.4\s
- 3.5練習
- 3.5.1手機號驗證案例
- 3.5.2用戶名驗證案例
- 3.5.3郵箱驗證
- 四、高級運用
- 4.1反向引用
- 4.2貪婪模式
- 4.3禁止貪婪模式
- 4.4禁止貪婪模式案例
一、概念
正則表達式(regular expression)描述了一種字符串匹配的模式(pattern),可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。
二、作用
實際當中主要用于下面幾個方面:
1、注冊頁面判斷用戶輸入的內容是否符合驗證規則
2、從整體字符串中看是否包含指定的字符串
3、找到符合規則的字符串進行替換
三、語法規則
3.1定義規則
3.2符號簡介
正則表達式可以有普通符號和元字符組成。
普通字符如下:
‘/a/’代表你就要匹配字符a
‘/a7/’代表你就要匹配字符a7
元字符:
是具有特殊意義的符號
‘/\d/’ 代表要找尋數字
匹配的方法:
preg_match(reg,reg,reg,str,[$arr]);
$reg就是自己定義的正則表達式
$str是自己要查詢的字符串
$arr是匹配到的結果
下面是各種符號的用法:
http://tool.oschina.net/uploads/apidocs/jquery/regexp.html
3.3preg_match用法詳解
preg_match()只要找到一次符合正則表達式的結果就終止了,不會再往下匹配
preg_match_all()是匹配一次成功以后不會終止,會一直匹配到完
\d和[0-9]是一個意思
3.4詳解元字符
3.4.1 \d和[0-9]
代表數字 參照上面
3.4.2 \D和[^0-9]
\D代表非數字和[^0-9]是一個意思
^在中括號中代表非
3.4.3^和$
^如果直接放在定界符前面代表以。。。開頭
$代表以。。。。結尾
3.4.4*代表出現0次或者多次
zo*能匹配“z”以及“zoo”。*等價于{0,}。
3.4.5+代表出現1次或者多次
zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等價于{1,}。
3.4.5?代表出現0次或者1次
“do(es)?”可以匹配“does”或“does”中的“do”。?等價于{0,1}。
3.4.6{n}
{n}代表固定出現n次
“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的兩個o。
3.4.7{n,}
{n,}代表最少出現n次,多者不限
o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等價于“o+”。“o{0,}”則等價于“o*”
3.4.8{n,m}
{n,m}代表最少出現n次,最多出現m次
“o{1,3}”將匹配“fooooood”中的前三個o。“o{0,1}”等價于“o?”。請注意在逗號和兩個數之間不能有空格
3.4.9點號(.)
表示匹配除了\n(換行符以外的任意單個字符)
如果要表示真正的點號必須用.
3.5.0 x|y
豎線代表是或者的意思
3.5.1 [xyz]
[xyz]點匹配xyz中的任意一個字符
3.5.2 [^xyz]
[^xyz]代表除了x y z以外的任意單個字符
3.5.3\b
\b代表匹配單詞的邊界
如果是如下什么也匹配不到
3.5.4\s
\s匹配任何空白字符,包括空格、制表符、換頁符等等。等價于[ \f\n\r\t\v]。
3.5練習
自己一個正則表達式,驗證手機號11位 都是數字
3.5.1手機號驗證案例
3.5.2用戶名驗證案例
用戶名可以是數字 字母 下劃線 中橫線 個數是3-8位
3.5.3郵箱驗證
四、高級運用
4.1反向引用
在正則表達式中出現小括號,是把小闊號中的內容當做子單元來使用
示例:
比如:你的字符串$str=‘aaaahttp://www.baidu.comdddd’;
然后你把里面的網址匹配出來替換成一個a標簽
preg_replace(正則表達式,替換成什么,源字符串)
4.2貪婪模式
正則表達式里會盡可能多的匹配的元素
4.3禁止貪婪模式
讓正則表達式盡可能少的匹配結果
4.4禁止貪婪模式案例
如果我們這樣寫會盡可能多的匹配
我們讓它盡可能少的匹配