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

鍍金池/ 問答/Java/ 求教?。?! 高手解釋一波為什么這個(gè)js的正則表達(dá)式能匹配到兩個(gè)空字符串???

求教?。?! 高手解釋一波為什么這個(gè)js的正則表達(dá)式能匹配到兩個(gè)空字符串???

clipboard.png

回答
編輯回答
網(wǎng)妓

第一, 那個(gè)不是空字符串
第二, 括號(hào)在正則中表示“捕獲”,比如 '123abc'.replace(/(\d+)abc/, '$1')其中 $1便表示第一個(gè)括號(hào)中匹配的內(nèi)容,即123。
第三, 本例中,為了說明清楚問題,改為 'a'.match(/()a/), 所得結(jié)果將是 ["a", "", index: 0, input: "a", groups: undefined], 結(jié)果中的第一個(gè)元素為正則表達(dá)式()a匹配到的全部字符串,第二個(gè)元素為第一個(gè)“捕獲”()的結(jié)果,這里表示單詞邊界,相當(dāng)于正則表達(dá)式里的\b。

回到題目,題目中的寫法等價(jià)于 ''.match(/(\b)/),由于正則表達(dá)式主體就只有捕獲,故結(jié)果中第一個(gè)元素和第二個(gè)元素相同,看起來像個(gè)"空字符串",實(shí)際不是“空”,請(qǐng)對(duì)比第三點(diǎn)理解。

2017年12月2日 13:40