正則表達(dá)式字符類加深理解
正則表達(dá)式字符類加深理解:
一.基本概念:
字符類相對(duì)來(lái)說(shuō)是比較簡(jiǎn)單的,但是也有可能由于理解不夠深入或者大意造成一些誤區(qū),下面再來(lái)做一下介紹。
字符類[]能夠匹配包含在中括號(hào)中的一系列字符中的任意一個(gè),但是匹配的結(jié)果只能夠是其中的一個(gè)而不是多個(gè),例如:
var str="abcd"; var reg=/[abcd]/; console.log(str.match(reg));
以上正則表達(dá)式只能夠匹配字符"a"。
二.使用連字符"-":
字符類可以使用連字符"-"來(lái)確定一個(gè)匹配的范圍,當(dāng)然使用連字符也是有原則的,前后兩個(gè)字符是有順序的,如果使用相同的編碼,后面的字符碼位應(yīng)大于或等于前面字符的碼位,例如:
[0-9]//正確的
[9-0]//錯(cuò)誤的
三.字符類中的特殊字符是否需要轉(zhuǎn)義:
大部分在正則中有特殊意義的字符在匹配其本身時(shí)需要進(jìn)行轉(zhuǎn)義,例如"."可以匹配任意字符,"$"用來(lái)匹配字符串的結(jié)尾,在字符類中就不需要進(jìn)行轉(zhuǎn)義,代碼實(shí)例如下:
var str="abc.efcd"; var reg=/c\./g; console.log(str.match(reg));
以上正則中,在點(diǎn)號(hào)前面添加了反斜杠進(jìn)行轉(zhuǎn)義,所以只會(huì)匹配字符串"c.",否則也會(huì)匹配"cd"。
但是在字符類中絕大多數(shù)元字符都不需要進(jìn)行轉(zhuǎn)義,必須要進(jìn)行轉(zhuǎn)義的字符只有"\",字符"^"和"-"是否需要轉(zhuǎn)義要看具體的應(yīng)用場(chǎng)景,代碼實(shí)例如下:
實(shí)例一:
var str="ab$c.efcd"; var reg=/[$.]/g; console.log(str.match(reg));
以上代碼可以匹配字符串中的"$"和"."本身。
實(shí)例二:
var str="a\\b$c.efcd"; var reg=/[\\$.]/g; console.log(str.match(reg));
以上代碼為匹配反斜杠必須要進(jìn)行轉(zhuǎn)義。
實(shí)例三:
var str="ab-c^569"; var reg=/[\^0\-9]/g; console.log(str.match(reg));
在以上代碼中"^"和"-"已經(jīng)不具有特殊意義了,而是表示它們本身,因?yàn)槭褂昧宿D(zhuǎn)義。
實(shí)例四:
var str="ab-c^569"; var reg=/[-a^c0]/g; console.log(str.match(reg));
上面的代碼"-"和"^"就沒(méi)有進(jìn)行轉(zhuǎn)義,這是因?yàn)樗鼈兯邳c(diǎn)位置使它們失去了特殊意義。
字符類中也可以使用轉(zhuǎn)義字符:
代碼實(shí)例如下:
var str="abc<|12"; var reg=/[\w]/g; console.log(str.match(reg));
特別注意:\b在字符類外表示單詞邊界,但是在字符類內(nèi)[\b]表示退格符。
四.排除型字符類:
[^]是一個(gè)排除型字符類,用以匹配不在中括號(hào)中的任一字符,當(dāng)然匹配結(jié)果也只能夠是一個(gè)字符,例如:
[^antzone]
以上正則可以匹配除了字符"a"、"n"、"t"、"z"、"o"、"n"和"e"之外的任意字符。
排除型字符類同樣也支持連字符"-",例如:
[^0-9]
可以匹配除了數(shù)字之外的其他字符。
相關(guān)文章
正則表達(dá)式日常收集整理(簡(jiǎn)單且實(shí)用)
正則表達(dá)式,又稱正規(guī)表示法、常規(guī)表示法。正則表達(dá)式的功能非常的強(qiáng)大,下面是小編日常收集整理的有關(guān)正則表達(dá)式常用知識(shí),感興趣的朋友一起學(xué)習(xí)吧2016-08-08javascript中使用正則表達(dá)式刪除前后空格的方法
去掉前后位空格的方法有很多種,下面腳本之家小編給大家分享使用js正則表達(dá)式如何刪除前后空格,感興趣的朋友跟著一起學(xué)習(xí)學(xué)習(xí)吧2015-09-09JavaScript正則表達(dá)式之后向引用實(shí)例代碼
正則表達(dá)式的幾種后向引用方法,以下是幾種比較經(jīng)典的應(yīng)用,感覺(jué)比vbscript的后向引用好多了。2008-06-06正則表達(dá)式、分組、子匹配(子模式)、非捕獲子匹配(子模式)
前面我們知道正則表達(dá)式有很多元字符表示匹配次數(shù)(量詞),都是可以重復(fù)匹配前面出現(xiàn)的單個(gè)字符次數(shù),需要的朋友可以參考下2016-06-06正則表達(dá)式re.sub替換不完整的問(wèn)題及完整解決方案
re.sub是個(gè)正則表達(dá)式方面的函數(shù),用來(lái)實(shí)現(xiàn)通過(guò)正則表達(dá)式,實(shí)現(xiàn)比普通字符串的replace更加強(qiáng)大的替換功能。這篇文章主要介紹了正則表達(dá)式re.sub替換不完整的問(wèn)題及解決方案,需要的朋友可以參考下2018-08-08javascript 手機(jī)號(hào)碼正則表達(dá)式驗(yàn)證函數(shù)
隨著手機(jī)號(hào)碼段的不斷增加,以前網(wǎng)上的手機(jī)號(hào)碼驗(yàn)證函數(shù)都不能那么完美的支持了,這里腳本之家編輯特為大家準(zhǔn)備的一個(gè)簡(jiǎn)單的正則與手機(jī)驗(yàn)證的函數(shù)分析。2009-12-12SQL 正則表達(dá)式及mybatis中使用正則表達(dá)式
這篇文章主要介紹了SQL 正則表達(dá)式及mybatis中使用正則表達(dá)式的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06