摘要:那么,全局匹配在這個例子里會產生什么樣的效果呢最小匹配下本來只能匹配出第一個,而加上全局匹配,匹配會繼續進行,將后面的也匹配了出來。
看正則的時候,遇到一些理解上的疑惑,一個是
*? +?
MDN上的解釋為
Matches like * and + from above, however the match is the smallest possible match.
如*,+一樣的匹配前面項,匹配是最小可能。
另外一個疑惑是參數g,這個的解釋是全局模式,但全局模式究竟是什么意思呢,最小匹配又是什么意思呢?
先從最小匹配的例子開始看一下:
var re = /".*?"/; ""foo""bar"".match(re) //return "foo"
MDN對最小匹配使用的是如上的例子,上例如果不用?最小匹配,則匹配不到"foo",我們來試一下
var re = /".*"/; ""foo""bar"".match(re) //return "foo""bar"
可見,如果不使用最小匹配,匹配一直進行到了字符串最后一個",前面的"被忽視掉,這種模式成為貪婪模式,就是有多少匹配多少,當*或者+ 后面帶?,則采用最小匹配,當查找到第一次成功的匹配,就將匹配結果返回。
那么,全局匹配在這個例子里會產生什么樣的效果呢?
var re = /".*?"/g; ""foo""bar"".match(re) //return [""foo"", ""bar""]
最小匹配下本來只能匹配出第一個foo,而加上全局匹配,匹配會繼續進行,將后面的bar也匹配了出來。這或許就是全局匹配的一個應用。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/87494.html
摘要:說來慚愧,做前端快三年對于正則表達式的應用還是很淺薄,大家都知道正則的速度基本上是最快的,但就是懶得去記那些語法和規則,這次項目中多次用到了需要匹配替換的動作,終于下定決心去研究一下了。 說來慚愧,做前端快三年對于正則表達式的應用還是很淺薄,大家都知道正則的速度基本上是最快的,但就是懶得去記那些語法和規則,這次項目中多次用到了需要匹配替換的動作,終于下定決心去研究一下了。 實例化正則對...
摘要:正則表達式如何創建正則表達式字面量創建通過構造函數正則表達式實例屬性及方法三個修飾符屬性,只讀不可修改正則表達式是否添加了忽略大小寫的修飾符,返回一個布爾值正則表達式是否添加了全局匹配的修飾符,返回一個布爾值正則表達式是否添加了換行的修飾符 正則表達式 如何創建正則表達式 字面量創建var r = /a/; 通過構造函數var r = new RegExp(a); 正則表達式實...
摘要:簡述正則表達式是處理字符串的利器,并提高工作效率,一個好的正則能夠幫我們省去幾十甚至上百行代碼。 簡述 正則表達式是處理字符串的利器,并提高工作效率,一個好的正則能夠幫我們省去幾十甚至上百行代碼。在工作中,也許你會見到在代碼中出現很多正則處理字符串,也可能見到代碼中毫無正則,原因在于會正則的人往往處理字符串首先想到用正則去處理,不會的那必然用很多API處理。并且在面試的時候很多同學往往...
摘要:表示進行多行匹配。如果正則表達式中含有子表達式,那么該數組后續的項依次為匹配到的第一個子表達式的匹配結果,第二個第個。關于正則方法有一點必須要提,很容易導致錯誤的情況。這時候直接使用該正則表達式對進行方法調用,卻返回了。匹配前一項至少次。有人說,一行正則抵得上100行代碼……正則表達式,每門語言都有,在我們的js開發中,最常見的使用場景:一是表單驗證,像是登錄注冊啊,用戶輸入檢測啊,不管在前...
閱讀 2101·2021-11-11 16:55
閱讀 3171·2021-10-11 10:58
閱讀 3039·2021-09-13 10:28
閱讀 3968·2021-07-26 23:57
閱讀 1006·2019-08-30 15:56
閱讀 1332·2019-08-29 13:15
閱讀 1259·2019-08-26 18:18
閱讀 1268·2019-08-26 13:44