摘要:那么,全局匹配在這個(gè)例子里會(huì)產(chǎn)生什么樣的效果呢最小匹配下本來(lái)只能匹配出第一個(gè),而加上全局匹配,匹配會(huì)繼續(xù)進(jìn)行,將后面的也匹配了出來(lái)。
看正則的時(shí)候,遇到一些理解上的疑惑,一個(gè)是
*? +?
MDN上的解釋為
Matches like * and + from above, however the match is the smallest possible match.
如*,+一樣的匹配前面項(xiàng),匹配是最小可能。
另外一個(gè)疑惑是參數(shù)g,這個(gè)的解釋是全局模式,但全局模式究竟是什么意思呢,最小匹配又是什么意思呢?
先從最小匹配的例子開(kāi)始看一下:
var re = /".*?"/; ""foo""bar"".match(re) //return "foo"
MDN對(duì)最小匹配使用的是如上的例子,上例如果不用?最小匹配,則匹配不到"foo",我們來(lái)試一下
var re = /".*"/; ""foo""bar"".match(re) //return "foo""bar"
可見(jiàn),如果不使用最小匹配,匹配一直進(jìn)行到了字符串最后一個(gè)",前面的"被忽視掉,這種模式成為貪婪模式,就是有多少匹配多少,當(dāng)*或者+ 后面帶?,則采用最小匹配,當(dāng)查找到第一次成功的匹配,就將匹配結(jié)果返回。
那么,全局匹配在這個(gè)例子里會(huì)產(chǎn)生什么樣的效果呢?
var re = /".*?"/g; ""foo""bar"".match(re) //return [""foo"", ""bar""]
最小匹配下本來(lái)只能匹配出第一個(gè)foo,而加上全局匹配,匹配會(huì)繼續(xù)進(jìn)行,將后面的bar也匹配了出來(lái)。這或許就是全局匹配的一個(gè)應(yīng)用。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/87494.html
摘要:說(shuō)來(lái)慚愧,做前端快三年對(duì)于正則表達(dá)式的應(yīng)用還是很淺薄,大家都知道正則的速度基本上是最快的,但就是懶得去記那些語(yǔ)法和規(guī)則,這次項(xiàng)目中多次用到了需要匹配替換的動(dòng)作,終于下定決心去研究一下了。 說(shuō)來(lái)慚愧,做前端快三年對(duì)于正則表達(dá)式的應(yīng)用還是很淺薄,大家都知道正則的速度基本上是最快的,但就是懶得去記那些語(yǔ)法和規(guī)則,這次項(xiàng)目中多次用到了需要匹配替換的動(dòng)作,終于下定決心去研究一下了。 實(shí)例化正則對(duì)...
摘要:用正則表達(dá)式語(yǔ)言創(chuàng)建的。匹配非數(shù)字的字符使用元字符元字符在正則表達(dá)式中有特殊含義的字符。正則表達(dá)式默認(rèn)是區(qū)別大小寫(xiě)的。正則表達(dá)式的字符串表示。若是一個(gè)正則表達(dá)式,若有標(biāo)志則替換所有匹配之處,若沒(méi)有則只替換第一個(gè)匹配之處。 前言 好久之前就說(shuō)要寫(xiě)一篇正則表達(dá)式的文章,正則表達(dá)式總是記了又忘,忘了再記,記了再忘,卒。言歸正傳,今天終于要研究一下這個(gè)謎一樣的正則表達(dá)式了。其實(shí)正則表達(dá)式并不難...
摘要:正則表達(dá)式如何創(chuàng)建正則表達(dá)式字面量創(chuàng)建通過(guò)構(gòu)造函數(shù)正則表達(dá)式實(shí)例屬性及方法三個(gè)修飾符屬性,只讀不可修改正則表達(dá)式是否添加了忽略大小寫(xiě)的修飾符,返回一個(gè)布爾值正則表達(dá)式是否添加了全局匹配的修飾符,返回一個(gè)布爾值正則表達(dá)式是否添加了換行的修飾符 正則表達(dá)式 如何創(chuàng)建正則表達(dá)式 字面量創(chuàng)建var r = /a/; 通過(guò)構(gòu)造函數(shù)var r = new RegExp(a); 正則表達(dá)式實(shí)...
摘要:簡(jiǎn)述正則表達(dá)式是處理字符串的利器,并提高工作效率,一個(gè)好的正則能夠幫我們省去幾十甚至上百行代碼。 簡(jiǎn)述 正則表達(dá)式是處理字符串的利器,并提高工作效率,一個(gè)好的正則能夠幫我們省去幾十甚至上百行代碼。在工作中,也許你會(huì)見(jiàn)到在代碼中出現(xiàn)很多正則處理字符串,也可能見(jiàn)到代碼中毫無(wú)正則,原因在于會(huì)正則的人往往處理字符串首先想到用正則去處理,不會(huì)的那必然用很多API處理。并且在面試的時(shí)候很多同學(xué)往往...
摘要:表示進(jìn)行多行匹配。如果正則表達(dá)式中含有子表達(dá)式,那么該數(shù)組后續(xù)的項(xiàng)依次為匹配到的第一個(gè)子表達(dá)式的匹配結(jié)果,第二個(gè)第個(gè)。關(guān)于正則方法有一點(diǎn)必須要提,很容易導(dǎo)致錯(cuò)誤的情況。這時(shí)候直接使用該正則表達(dá)式對(duì)進(jìn)行方法調(diào)用,卻返回了。匹配前一項(xiàng)至少次。有人說(shuō),一行正則抵得上100行代碼……正則表達(dá)式,每門語(yǔ)言都有,在我們的js開(kāi)發(fā)中,最常見(jiàn)的使用場(chǎng)景:一是表單驗(yàn)證,像是登錄注冊(cè)啊,用戶輸入檢測(cè)啊,不管在前...
閱讀 2114·2021-11-11 16:55
閱讀 3183·2021-10-11 10:58
閱讀 3061·2021-09-13 10:28
閱讀 3997·2021-07-26 23:57
閱讀 1044·2019-08-30 15:56
閱讀 1341·2019-08-29 13:15
閱讀 1278·2019-08-26 18:18
閱讀 1284·2019-08-26 13:44