一文詳解正則表達(dá)式中的特殊符號(hào)
正則表達(dá)式中的特殊符號(hào)
如:
preg_match('/.+?hxx/is', hxx));
返回,0,表示沒(méi)有匹配,這是因?yàn)?.+?
的作用,具體講一下。
.的作用
- 作用:匹配除換行符(
\n
)以外的任意單個(gè)字符。 - 修飾符影響:當(dāng)使用
s
修飾符(單行模式)時(shí),.
也能匹配換行符。
如:
preg_match('/a.b/', acb));
- 有.時(shí):可以匹配像
aab
、acb
、a b
這樣的字符串,因?yàn)?code>.可以匹配任意字符(除了換行符,除非使用s
修飾符)。 - 無(wú).時(shí)(例如
/ab/
):只能匹配ab
,不能匹配中間有其他字符的情況。
+的作用
- 作用:匹配前面的子表達(dá)式一次或多次(貪婪模式,盡可能多地匹配)。
- 組合使用:當(dāng)與
?
組合成+?
時(shí),表示非貪婪模式(盡可能少地匹配)。
如:
preg_match('/a+/', aaa));
- 有+時(shí):可以匹配一個(gè)或多個(gè)連續(xù)的
a
,如a
、aa
、aaa
等。 - 無(wú)+時(shí)(例如
/a/
):只能匹配單個(gè)a
,不能匹配多個(gè)。
?的作用
- 作用:
- 單獨(dú)使用時(shí):匹配前面的子表達(dá)式零次或一次(即前面的內(nèi)容是可選的)。
- 緊跟在量詞(如
*
、+
、?
、{n}
等)后面時(shí):將貪婪模式轉(zhuǎn)換為非貪婪模式(最小匹配)。
情況1:?jiǎn)为?dú)使用
如:
preg_match('/a?b/', ab));
- 有?時(shí):可以匹配
b
(因?yàn)?code>a出現(xiàn)0次)或ab
(a
出現(xiàn)1次),但不能匹配aab
。 - 無(wú)?時(shí)(例如
/ab/
):只能匹配ab
,不能匹配b
。
情況2:作為非貪婪修飾符(與量詞組合)
如:
preg_match('/a+?b/', aab));
- 有?(非貪婪模式)時(shí):在字符串
aaab
中,會(huì)匹配aab
(因?yàn)?code>+?會(huì)盡可能少地匹配,只匹配一個(gè)a
,然后遇到b
就停止)。 - 無(wú)?(貪婪模式)時(shí):在字符串
aaab
中,會(huì)匹配整個(gè)aaab
(因?yàn)?code>+會(huì)盡可能多地匹配)。
*的作用
- 有\(zhòng)*: 允許前面的元素出現(xiàn)0次或多次。即該元素可以沒(méi)有,也可以重復(fù)多次。
- 無(wú)\*: 前面的元素必須恰好出現(xiàn)一次(如果沒(méi)有其他量詞修飾的話)。
如:
preg_match('/ab*c/', 'ac'); // 匹配 "ac"(b出現(xiàn)0次) // 匹配 "abc" // 匹配 "abbbbc"
^的作用
作用:
- 匹配字符串的開始位置
- 在多行模式(
m
修飾符)下也匹配每行的開頭
如:
preg_match('/^abc/', 'abc'); //匹配 "abc123" //不匹配 "123abc"
$的作用
作用
- 匹配字符串的結(jié)束位置
- 在多行模式(
m
修飾符)下也匹配每行的結(jié)尾
如:
preg_match('/abc$/', 'abc'); //不匹配 "abc123" //匹配 "123abc"
綜合對(duì)比表
元字符 | 示例表達(dá)式 | 匹配行為 | 示例輸入 | 匹配結(jié)果 |
---|---|---|---|---|
. | /a.b/ | 匹配任意單個(gè)字符(除換行符) | aXb | 匹配aXb |
無(wú). | /ab/ | 只能匹配字面ab | aXb | 不匹配 |
+ | /a+/ | 匹配1個(gè)或多個(gè)a | aaa | 匹配整個(gè)aaa |
無(wú)+ | /a/ | 只能匹配單個(gè)a | aaa | 只匹配第一個(gè)a |
? (單獨(dú)) | /a?b/ | a 出現(xiàn)0次或1次 | b | 匹配b |
無(wú)? | /ab/ | 只能匹配ab | b | 不匹配 |
+? | /a+?b/ | 非貪婪匹配:盡可能少地匹配a | aaab | 匹配aab (從第二個(gè)a 開始) |
+ (無(wú)? ) | /a+b/ | 貪婪匹配:盡可能多地匹配a | aaab | 匹配整個(gè)aa |
^ | /^a/ | 匹配出現(xiàn)在開頭的a | a | 匹配到了開頭的 a |
總結(jié)
就是最近經(jīng)常遇到一些這類的 特殊符號(hào),搞不懂什么意思,網(wǎng)上也沒(méi)有很全面的教程,就問(wèn)al,自己總結(jié)了一下。
到此這篇關(guān)于正則表達(dá)式中特殊符號(hào)的文章就介紹到這了,更多相關(guān)正則表達(dá)式特殊符號(hào)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
javascript 數(shù)字的正則表達(dá)式集合
這里收集的是驗(yàn)證數(shù)字的正則表達(dá)式集合,比較的全了,需要驗(yàn)證數(shù)字的朋友很值得參考下。2010-04-04JS 正則表達(dá)式的相關(guān)方法(正則學(xué)習(xí)筆記1)
最近在學(xué)習(xí)正則表達(dá)式,獨(dú)自學(xué)習(xí)還是比較有困難的。為了怕忘記,所以我常常用【記錄】的方式來(lái)記下我的筆記。2010-05-05JavaScript常用的正則表達(dá)式表單驗(yàn)證代碼
驗(yàn)證表單的不同內(nèi)容用的是不同的正則表達(dá)式??蛻舳蓑?yàn)證常用的幾個(gè)。2010-12-12