在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ 對正則表達(dá)式量詞的理解

對正則表達(dá)式量詞的理解

function regTest (reg, raw) {
  console.log(`${raw} => ${reg.test(raw)}`)
}

regTest(/((\d)\d\1){2}/, '31312');
regTest(/((\d)\d\1){3}/, '31313');

輸出結(jié)果:
31312 => true
31313 => false

怎么理解第一次調(diào)用返回true,
第一次返回true,好理解,有兩次匹配,313、131
第二次返回false,我的理解有三個(gè)匹配的313、131、313 ,為什么不返回true?


這里理解錯了,實(shí)際上\1表示的是(\d)\d)而不是(\d),捕獲分組時(shí),按照括號出現(xiàn)的順序從左到右標(biāo)記,
這樣就能理解了。

回答
編輯回答
逗婦惱

我覺得此處的寫法是有問題的,正常的1是匹配第一個(gè)括號的,然而第一個(gè)括號是1的外層,所以1返回的為空字符串,因而匹配31312的時(shí)候?qū)嶋H上循環(huán)的是 \d1 這個(gè)東西,循環(huán)兩次因而返回true,第二個(gè)循環(huán)三次,但是字符串中不足,因而就返回false

2017年7月5日 00:21
編輯回答
爆扎

第一個(gè)的{2}表示前面括號里的匹配出現(xiàn)2次, 所以第一個(gè)true.
第二個(gè)的{3}表示前面括號里的匹配出現(xiàn)3次, 所以第二個(gè)是false.

2017年11月10日 19:54