您好,登錄后才能下訂單哦!
今天小編給大家分享的是javascript正則表達(dá)式的字符匹配,相信大部分人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,話不多說,一起往下看吧。
正則表達(dá)式是匹配模式,可以匹配字符,可以匹配位置。
下面主要介紹匹配字符的情況,匹配位置的情況我也正在學(xué)習(xí)中。
兩種模糊匹配:
1.橫向模糊匹配:一個(gè)正則可匹配的字符串的長(zhǎng)度不是固定的。其實(shí)現(xiàn)方式是使用量詞。比如說{m,n}是指字符最少連續(xù)出現(xiàn)m次,最多n次。
如/ab{2,5}c/ 表示匹配這樣一個(gè)字符串:第一個(gè)字符是 “a”,接下來是 2 到 5 個(gè)字符 “b”,最后是字符 “c”。
例如:(大家可以手動(dòng)試一下,想想會(huì)得到哪些結(jié)果)
var regex = /ab{2,5}c/g; var string = "abc abbc abbbc abbbbc abbbbbc abbbbbbc"; console.log( string.match(regex) );
g是一個(gè)修飾符,它表示全局匹配,就是在string里面按順序找到滿足匹配條件的所有的字串。
2.縱向模糊匹配:一個(gè)正則可匹配的字符串具體到某一位字符,可以不是一個(gè)確定的字符,可以有多種可能。其實(shí)現(xiàn)方式是使用字符組
如/a[123]b/表示匹配這樣一個(gè)字符串:第一個(gè)字符是a,第二個(gè)字符可以是’1’,‘2’,'3’中的任何一個(gè),但是只能是一個(gè)。
量詞(重復(fù))
1.常見的簡(jiǎn)寫形式:
(1){m,} 表示至少出現(xiàn)m次
(2){m} 表示出現(xiàn)m次
(3)? 等價(jià)于{0,1} 表示出現(xiàn)或者不出現(xiàn)
(4)+ 等價(jià)于{1,} 表示至少出現(xiàn)1次
(5)* 等價(jià)于{0,} 表示出現(xiàn)任意次,可以不出現(xiàn),也可以若干次
2.貪婪匹配與惰性匹配
(1)貪婪匹配:/\d{2,5}/ 表示數(shù)字連續(xù)出現(xiàn)2-5次,會(huì)盡量多的匹配
var regex = /\d{2,5}/g; var string = "123 1234 12345 123456"; console.log( string.match(regex) ); // => ["123", "1234", "12345", "12345"]
(2)惰性匹配:/\d{2,5}?/ 表示雖然2-5次都可以,但是當(dāng)2個(gè)就夠的時(shí)候,就不再嘗試。
var regex = /\d{2,5}?/g; var string = "123 1234 12345 123456"; console.log( string.match(regex) ); // => ["12", "12", "34", "12", "34", "12", "34", "56"]
字符組
1.范圍表示:
(1)用連字符“-”來省略簡(jiǎn)寫,如[123456abcdefGHIJKLM]就可以寫成[1-6a-fG-M]。
(2)注意:若匹配的字符串中有連字符時(shí),要么放開頭,要么放結(jié)尾,要么進(jìn)行轉(zhuǎn)義-。
2.排除字符組:如[^abc]
表示某位字符可以是任何東西,但不能是a,b,c。^脫字符表示求反,也有相應(yīng)的范圍表示。
3.常見的簡(jiǎn)寫形式:
(1)\d
表示[0-9]
。是一位數(shù)字
(2)\D
表示[\^0-9]
。除數(shù)字外的任意字符。
(3)\w
表示 [0-9a-zA-Z_]
。數(shù)字、大小寫字母和下劃線。也稱單詞字符
(4)\W
表示[^0-9a-zA-Z_]
。非單詞字符
(5)\s
表示[ \t\v\n\r\f]
。表示空白符,包括空格、水平制表符、垂直制表符、換行符、回車符、換頁(yè)符。
(6)\S
表示[^ \t\v\n\r\f]
。非空白字符
(7).
表示[^\n\r\u2028\u2029]
。通配符,表示幾乎任意字符。換行符、回車符、行分隔符和段分隔符除外。
要匹配任意字符,可以使用 [\d\D]
、[\w\W]
、 和 [^]
中任何的一個(gè)。
多選分支
一個(gè)模式可以實(shí)現(xiàn)橫向和縱向模糊匹配,多選分支可以支持多個(gè)子模式任選其一。
具體形式:(p1|p2|p3
) p1,p2,p3是子模式。
要注意下面的這個(gè)問題。
var regex = /good|goodbye/g; var string = "goodbye"; console.log( string.match(regex) );
上面這個(gè)例子獲得的結(jié)果是“good”
var regex = /goodbye|good/g; var string = "goodbye"; console.log( string.match(regex) );
這個(gè)例子獲得的是“goodbye”
我們得到這樣的結(jié)論:分支結(jié)構(gòu)也是惰性的,即當(dāng)前面的匹配上了,后面的就不再嘗試了。
看完上述內(nèi)容,你們對(duì)javascript正則表達(dá)式的字符匹配有進(jìn)一步的了解嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。