在學(xué)習(xí)javascript中正則是經(jīng)常使用的,在正則中的特殊符號(hào),需要轉(zhuǎn)義等,下面對(duì)正則中的轉(zhuǎn)義和特殊字符進(jìn)行介紹
首先是元字符,意思是,在使用這些字符時(shí),必須使用轉(zhuǎn)義字符,負(fù)責(zé)會(huì)出錯(cuò).
元字符有:()[]{}\^$|?*
任何時(shí)候用在正則表達(dá)式中用到以上字符必須進(jìn)行轉(zhuǎn)義.
舉例:假如匹配?這個(gè)字符
var re = /\?/;
或者
var re = new RegExp("\\?");
正則中的特殊符號(hào):
注意到第二個(gè)正則,當(dāng)用到\的時(shí)候,多用了\來(lái)進(jìn)行轉(zhuǎn)義\ 最后達(dá)到兩個(gè)\\,叫做雙重轉(zhuǎn)義
其次 特殊符號(hào)
在則會(huì)功能則中可以使用ASCII代碼也可以用Unicode代碼.
當(dāng)用字符用十六進(jìn)制表示時(shí),在字符簽名必須加上\x
當(dāng)用八進(jìn)制時(shí),在紫府前必須加上 \
當(dāng)用Unicode編碼表示是必須加上 \
還有其它一些特殊符號(hào)
字符 說(shuō)明
\t 制表符
\n 換行符
\r 回車符
\a 換頁(yè)符
\e alert字符
\cX escape字符
\b 與X相對(duì)應(yīng)的字符
\v 回退字符
\0 空字符
如果用RegExp構(gòu)造函數(shù)來(lái)使用它們,則必須使用雙重轉(zhuǎn)義.
以上就是正則中的特殊符號(hào)
正則表達(dá)之字符類:
先說(shuō)一下字符類的意思,字符類是用于測(cè)試的字符組合.字符類是放到中括號(hào)[]中的,可以有效的告訴正則去匹配.在字符類又分為五個(gè)簡(jiǎn)單的類,分別說(shuō)一下
1.簡(jiǎn)單類
簡(jiǎn)單類就是你想要匹配的字母組
舉例說(shuō)明
var _class = /[abc]de/gi;
上面的一個(gè)字符類就是一個(gè)簡(jiǎn)單的類,可以匹配ade,bde,cde.三種,后面的g和i分別是全局和不區(qū)分大小寫.
再簡(jiǎn)單類中還可以使用unicode編碼
var _class = /[a\u0062c]de/gi;
這個(gè)跟上面的一樣,可以匹配ade,bde,cde.三種,后面的g和i分別是全局和不區(qū)分大小寫.
2.負(fù)向類
負(fù)向類就是你要排除的字母,用上尖號(hào)(^)表示負(fù)向類
舉例//www.forasp.cn 轉(zhuǎn)載請(qǐng)注明
var _class = /[^abc]de/gi;
用了負(fù)向類^就排除了a,b,c三個(gè)開頭的字符串,即 ade,bde,cde都不匹配
3.范圍類
范圍類即指定從一個(gè)字符到另一個(gè)字符的范圍,用中杠(-)表示.
舉例
var _class = /[a-c]de/gi;//這就是表示從a到c,即,abc都匹配
上面的就匹配了ade,bde,cde.三種.也可以加上負(fù)向類表示不匹配
var _class = /[^a-c]de/gi;//這就是表示從a到c,即,abc都不匹配
4.組合類
組合類是有幾種其它類的組合而合成的字符類.
舉例
var _class = /[1-9a-c]/gi;
上面的表達(dá)式就是1-9或者a-c均能匹配,列舉1,2,3,4,5,6,7,8,9,a,b,c
在此 要注意的是字符內(nèi)部類之間不能有空格.還有不能有交叉.
5.預(yù)定義類//www.forasp.cn 轉(zhuǎn)載請(qǐng)注明
預(yù)定義類就是將復(fù)雜的組合類預(yù)定義成特定的代碼.
列舉了javascrip中的預(yù)定義類
代碼 等同于 匹配
. [^\n\r] 出了換行和回車以外的任何字符
\d [0-9] 數(shù)字
\D [^0-9] 非數(shù)字
\s [ \t\n\xB\f\r] 空白字符
\S [^ \t\n\xB\f\r] 非空白字符
\w [a-zA-Z_0-9] 單詞字符,包括字母下劃線和數(shù)字
\W [^a-zA-Z_0-9] 非單詞字符
以上就是常用的正則表達(dá)式的字符類,常用謹(jǐn)記
====================
正則表達(dá)之量詞
正則表達(dá)式中的量詞,規(guī)定了特定的字符串出現(xiàn)的次數(shù).當(dāng)指定某個(gè)模式應(yīng)當(dāng)出現(xiàn)的出售時(shí),可以指定硬性數(shù)量.
可以說(shuō)分為兩類量詞
1.簡(jiǎn)單量詞,如下標(biāo)識(shí)
代碼 描述
? 出現(xiàn)零次或者一次
* 出現(xiàn)任意次數(shù)
+ 至少出現(xiàn)一次
{n} 一定出現(xiàn)n次
{n,m} 至少出現(xiàn)n次最多出現(xiàn)m次
{n,} 至少出現(xiàn)n次
舉例說(shuō)明以上的標(biāo)識(shí),gi是全局部分大小寫,下面就不說(shuō)gi了.
var foraspcn = /[ab]?c/gi;//匹配 c,ac,bc
var foraspcn = /[ab]*c/gi;//匹配 c,aac,bbc...
var foraspcn = /[ab]+c/gi;//匹配 ac,bc,aac,bbc..
var foraspcn = /[ab]{1}c/gi;//匹配 ac,bc
var foraspcn = /[ab]{1,2}c/gi;//匹配 ac,bc,aac,bbc
var foraspcn = /[ab]{1,}c/gi;//匹配 ac,bc,aac,bbc...
看看看懂沒(méi)有,有的時(shí)候有的是相等的比如
?就等于{0,1}
*等于{0,}
+等于{1,}
2.貪婪的,惰性的,支配性的量詞
首先解釋一下三種量詞.
貪婪量詞就是先看整個(gè)字符串師傅匹配,如果沒(méi)有,則去掉字符串最后一個(gè)字符,再次匹配.一直到發(fā)現(xiàn)最后一個(gè)匹配或者字符串不剩下任何字符.目前的量詞都是貪婪的.
惰性量詞是首先看第一個(gè)字符是否匹配,如果單獨(dú)這一個(gè)字符不夠,則讀入下一個(gè),與組成兩個(gè)字符去匹配,如果沒(méi)有發(fā)現(xiàn)再次讀取下一個(gè)字符,直到發(fā)現(xiàn)匹配或者整個(gè)字符串都沒(méi)有匹配.惰性和貪婪正好相反.
支配量詞擦好難過(guò)時(shí)匹配整個(gè)字符串,如果不匹配則不再嘗試.支配量詞就是整體匹配一次.$hidden$
貪婪的,惰性的,支配性的量詞 表如下
貪婪的 惰性的 支配性 描述
? ?? ?+ 零次或者一次出現(xiàn)
* *? *+ 零次或者多次出現(xiàn)
+ +? ++ 至少一次出現(xiàn)
{n} {n}? {n}+ 正好n次出現(xiàn)
{n,m} {n,m}? {n,m}+至少n次出現(xiàn),至多m次出現(xiàn)
{n,} {n,}? {n,}+ 至少n次出現(xiàn)
以上就是正則中量詞的相關(guān)內(nèi)容