正則表達(dá)式的語(yǔ)法規(guī)則
創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)寶山,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):028-86922220正則表達(dá)式描述了一種字符串匹配的模式,通過(guò)這個(gè)模式在特定的函數(shù)中對(duì)字符串進(jìn)行匹配、查找、替換及分割等操作。
三個(gè)組成部分:
原子
元字符
模式修正符
以及 定界符
1 定界符
不僅局限”/“。除了字母、數(shù)字和反斜線”\“以外的任何字符都可以作為定界符號(hào)。
2 原子
1 普通字符作為原子
a~z A~Z 0~9
2 一些特殊字符和元字符作為原子
有特殊意義的符號(hào),需使用轉(zhuǎn)義字符”\“
3 一些非打印字符作為原子
\cx \f \n \r \t \w
4 使用”通用字符類(lèi)型“作為原子
\d 匹配任意一個(gè)十進(jìn)制數(shù)字,等價(jià)于[0-9]
\D匹配任意一個(gè)除十進(jìn)制字以外的字符,等價(jià)于[^0-9]
\s匹配任意一個(gè)空白字符,等價(jià)于[\f\n\r\t\v]
\S匹配除空白字符以外任意一個(gè)字符,等價(jià)于[^\f\n\r\t\v]
\w匹配任意一個(gè)數(shù)字、字母或下劃線,等價(jià)于[0-9a-ZA-Z]
\W匹配除數(shù)字、字母或下劃線以外的任意一個(gè)字符,等價(jià)于[^0-9a-zA-Z]
5 自定義原子表([])作為原子
3 元字符
限定符
* 匹配0次、1次或多次其前的原子
+ 匹配1次或多次其前的原子
? 匹配0次或1此前的原子
{n} 表示其前面的原子恰好出現(xiàn)n次
{n,} 表示其前面的原子出現(xiàn)不少于n次
{n,m}表示其前面的原子至少出現(xiàn)n次,最多出現(xiàn)m次
句號(hào)
. 匹配除了換行符外的任意一個(gè)字符
模式選擇符
| 匹配兩個(gè)或多個(gè)分支選擇
邊界限制
^或\A匹配輸入字符串的開(kāi)始位置
$或\Z匹配輸入字符串的結(jié)束位置
\b 匹配單詞的邊界
\B 匹配除單詞邊界以外的部分
[] 匹配方括號(hào)中指定的任意一個(gè)原子
[^] 匹配除方括號(hào)中原子以外的任意一個(gè)字符
模式單元
( ) 匹配其整體為一個(gè)原子,即模式單元。
后向引用
模式加元字符括號(hào)后,結(jié)果被存儲(chǔ)到緩沖區(qū)中,可以使用“\n”(n為第n個(gè)括號(hào))引用
模式修正符
在正則表達(dá)式定界符之外使用。
i 在和模式進(jìn)行匹配時(shí)不區(qū)分大小寫(xiě)
m 將字符串視為多行(默認(rèn)情況,不匹配換行符)
s 模式中的圓點(diǎn)元字符匹配所有字符,包括換行符。將字符串視為單行,換行符作為普通字符看待。(可以匹配換行符)
x 模式中的空白忽略不計(jì),除非它已經(jīng)被轉(zhuǎn)義
e 只用在preg_replace()函數(shù)中,在替換字符串中對(duì)逆向引用做正常的替換,將其作為PHP代碼求值,并用其結(jié)果來(lái)替換所搜索的字符串
U 反轉(zhuǎn)了匹配數(shù)量的值使其不是默認(rèn)的重復(fù),而變成在后面跟上“?”才變得重復(fù)。(非貪婪模式,同.*?)
D 模式中的美元元字符僅匹配目標(biāo)字符串的結(jié)尾。(沒(méi)有此選項(xiàng),如果最后一個(gè)字符是換行符,美元符號(hào)會(huì)匹配此字符之前)
與Perl兼容的正則表達(dá)式函數(shù)
一匹配與查找
1 preg_match()
通常用于表單驗(yàn)證。可以按指定的正則表達(dá)式模式,對(duì)字符串進(jìn)行搜索和匹配一次。
@pattern提供用戶(hù)按正則表達(dá)式語(yǔ)法編寫(xiě)的模式
@subject 字符串
@matches保存與第一個(gè)參數(shù)中的子模式的各個(gè)部分的匹配結(jié)果。Matches[0]保存了與正則表達(dá)式pattern匹配的整體內(nèi)容。Matches其他元素是正則表達(dá)式小括號(hào)內(nèi)按順序依次的內(nèi)容。
@return返回0或1,匹配結(jié)果數(shù)
Intpreg_match(string pattern,string subject[,array match])
2 preg_match_all()
一直搜索到指定字符串的結(jié)尾,可以獲得所有匹配到的結(jié)果。
@pattern
@subjet
@matches所有匹配結(jié)果
@flags
PREG_PATTERN_ORDER: 對(duì)結(jié)果排序,$matches[0]為全部模式匹配的數(shù)組,$matches[1]為第一個(gè)括號(hào)中的子模式所匹配的字符串組成的數(shù)組。
PERG_SET_ORDER:對(duì)結(jié)果排序,使$matches[0]為第一組匹配項(xiàng)的數(shù)組,$matches[1]位第二組的匹配項(xiàng)數(shù)組。
@return 返回整個(gè)模式匹配的次數(shù),如果出錯(cuò)則返回FALSE
intpreg_match_all(string pattern,string subject,array matches[, int flags])
3 preg_grep()
@pattern 正則表達(dá)式
@input 數(shù)組
@return 返回一個(gè)數(shù)組,包括了第二個(gè)參數(shù)input數(shù)組中與給定的第一個(gè)參數(shù)pattern模式相匹配的單元。(對(duì)input中的每個(gè)元素,只進(jìn)行一次匹配)
arraypreg_grep(string pattern,array input)
4 strstr() strops() strrpos() substr()
二、字符串的替換
1 preg_replace()
@pattern 模式匹配項(xiàng)
@replacement 替換內(nèi)容
@subject 原字符串
@limit 替換個(gè)數(shù)(值為-1,則所有都會(huì)匹配)
mixedpreg_replace( mixed pattern,mixed replacement ,mixe subject [,int limit])
注:與模式修正符e的搭配使用
2 str_replace()
三、字符串的分割和拼接
1 preg_split()
用途:返回一個(gè)字符串?dāng)?shù)組,數(shù)組中元素包含通過(guò)第二個(gè)參數(shù)subject中的字符串,經(jīng)第一個(gè)參數(shù)的正則表達(dá)式pattern,作為匹配的邊界所分割的子串。
@pattern 模式匹配項(xiàng)
@subject 字符串
@limit 替換個(gè)數(shù)
@flags
PREG_SPLIT_NO_EMPTY:如果設(shè)定了本標(biāo)記,則preg_split()只返回非空部分
PREG_SPLIT_DELIM_CAPTURE:如果設(shè)定了本標(biāo)記,定界符模式中的括號(hào)表達(dá)式也會(huì)被捕獲并返回。
PREG_SPLIT_OFFSET_CAPTURE:如果設(shè)定本標(biāo)記,對(duì)每個(gè)出現(xiàn)的匹配結(jié)果也同時(shí)返回其附屬的字符串偏移量。
arraypreg_split( string pattern,string subject[,int limit [,flags]])
2 explode()
3 implode()
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。