您好,登錄后才能下訂單哦!
正則表達式的語法規則
正則表達式描述了一種字符串匹配的模式,通過這個模式在特定的函數中對字符串進行匹配、查找、替換及分割等操作。
三個組成部分:
原子
元字符
模式修正符
以及 定界符
1 定界符
不僅局限”/“。除了字母、數字和反斜線”\“以外的任何字符都可以作為定界符號。
2 原子
1 普通字符作為原子
a~z A~Z 0~9
2 一些特殊字符和元字符作為原子
有特殊意義的符號,需使用轉義字符”\“
3 一些非打印字符作為原子
\cx \f \n \r \t \w
4 使用”通用字符類型“作為原子
\d 匹配任意一個十進制數字,等價于[0-9]
\D匹配任意一個除十進制字以外的字符,等價于[^0-9]
\s匹配任意一個空白字符,等價于[\f\n\r\t\v]
\S匹配除空白字符以外任意一個字符,等價于[^\f\n\r\t\v]
\w匹配任意一個數字、字母或下劃線,等價于[0-9a-ZA-Z]
\W匹配除數字、字母或下劃線以外的任意一個字符,等價于[^0-9a-zA-Z]
5 自定義原子表([])作為原子
3 元字符
限定符
* 匹配0次、1次或多次其前的原子
+ 匹配1次或多次其前的原子
? 匹配0次或1此前的原子
{n} 表示其前面的原子恰好出現n次
{n,} 表示其前面的原子出現不少于n次
{n,m}表示其前面的原子至少出現n次,最多出現m次
句號
. 匹配除了換行符外的任意一個字符
模式選擇符
| 匹配兩個或多個分支選擇
邊界限制
^或\A匹配輸入字符串的開始位置
$或\Z匹配輸入字符串的結束位置
\b 匹配單詞的邊界
\B 匹配除單詞邊界以外的部分
[] 匹配方括號中指定的任意一個原子
[^] 匹配除方括號中原子以外的任意一個字符
模式單元
( ) 匹配其整體為一個原子,即模式單元。
后向引用
模式加元字符括號后,結果被存儲到緩沖區中,可以使用“\n”(n為第n個括號)引用
模式修正符
在正則表達式定界符之外使用。
i 在和模式進行匹配時不區分大小寫
m 將字符串視為多行(默認情況,不匹配換行符)
s 模式中的圓點元字符匹配所有字符,包括換行符。將字符串視為單行,換行符作為普通字符看待。(可以匹配換行符)
x 模式中的空白忽略不計,除非它已經被轉義
e 只用在preg_replace()函數中,在替換字符串中對逆向引用做正常的替換,將其作為PHP代碼求值,并用其結果來替換所搜索的字符串
U 反轉了匹配數量的值使其不是默認的重復,而變成在后面跟上“?”才變得重復。(非貪婪模式,同.*?)
D 模式中的美元元字符僅匹配目標字符串的結尾。(沒有此選項,如果最后一個字符是換行符,美元符號會匹配此字符之前)
與Perl兼容的正則表達式函數
一匹配與查找
1 preg_match()
通常用于表單驗證。可以按指定的正則表達式模式,對字符串進行搜索和匹配一次。
@pattern提供用戶按正則表達式語法編寫的模式
@subject 字符串
@matches保存與第一個參數中的子模式的各個部分的匹配結果。Matches[0]保存了與正則表達式pattern匹配的整體內容。Matches其他元素是正則表達式小括號內按順序依次的內容。
@return返回0或1,匹配結果數
Intpreg_match(string pattern,string subject[,array match])
2 preg_match_all()
一直搜索到指定字符串的結尾,可以獲得所有匹配到的結果。
@pattern
@subjet
@matches所有匹配結果
@flags
PREG_PATTERN_ORDER: 對結果排序,$matches[0]為全部模式匹配的數組,$matches[1]為第一個括號中的子模式所匹配的字符串組成的數組。
PERG_SET_ORDER:對結果排序,使$matches[0]為第一組匹配項的數組,$matches[1]位第二組的匹配項數組。
@return 返回整個模式匹配的次數,如果出錯則返回FALSE
intpreg_match_all(string pattern,string subject,array matches[, int flags])
3 preg_grep()
@pattern 正則表達式
@input 數組
@return 返回一個數組,包括了第二個參數input數組中與給定的第一個參數pattern模式相匹配的單元。(對input中的每個元素,只進行一次匹配)
arraypreg_grep(string pattern,array input)
4 strstr() strops() strrpos() substr()
二、字符串的替換
1 preg_replace()
@pattern 模式匹配項
@replacement 替換內容
@subject 原字符串
@limit 替換個數(值為-1,則所有都會匹配)
mixedpreg_replace( mixed pattern,mixed replacement ,mixe subject [,int limit])
注:與模式修正符e的搭配使用
2 str_replace()
三、字符串的分割和拼接
1 preg_split()
用途:返回一個字符串數組,數組中元素包含通過第二個參數subject中的字符串,經第一個參數的正則表達式pattern,作為匹配的邊界所分割的子串。
@pattern 模式匹配項
@subject 字符串
@limit 替換個數
@flags
PREG_SPLIT_NO_EMPTY:如果設定了本標記,則preg_split()只返回非空部分
PREG_SPLIT_DELIM_CAPTURE:如果設定了本標記,定界符模式中的括號表達式也會被捕獲并返回。
PREG_SPLIT_OFFSET_CAPTURE:如果設定本標記,對每個出現的匹配結果也同時返回其附屬的字符串偏移量。
arraypreg_split( string pattern,string subject[,int limit [,flags]])
2 explode()
3 implode()
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。