var cob='bbbb';var oreg=/b*/gvar res=cob.match(oreg);console.log(res)以上正則表達式匹配出來的結(jié)果為["bbbb", ""]問一下為什么打印出來的數(shù)組會有一個空的字符串呢?也沒有發(fā)現(xiàn)字符串后面有空字符串.幫忙詳細解釋一下,謝謝了
2 回答

慕的地6264312
TA貢獻1817條經(jīng)驗 獲得超6個贊
個人理解,使用全局標志 g 將進行多次匹配。由于正則默認是貪婪匹配,因此第一次匹配時 'bbbb' 被全部匹配,lastIndex 走到了字符串最后一位;然后進行第二次匹配時 lastIndex + 1, 被檢測的相當于是空字符串,由于 /b*/
與空字符串也能夠匹配,因此第二次成功匹配,并且返回的匹配成功的字符串就是空字符串。
關(guān)于使用全局標志 g 時的匹配規(guī)則,摘自這篇博文:
當使用全局標志 g 進行匹配時,新創(chuàng)建的正則表達式對象將使用模式對要將要匹配的字符串進行全局匹配。在全局匹配模式下可以對指定要查找的字符串執(zhí)行多次匹配。每次匹配使用當前正則對象的 lastIndex 屬性的值作為在目標字符串中開 始查找的起始位置。lastIndex屬性的初始值為0,找到匹配的項后lastIndex的值被重置為匹配內(nèi)容的下一個字符在字符串中的位置索引,用來標識下次執(zhí)行匹配時開始查找的位置。如果找不到匹配的項lastIndex的值會被設(shè)置為0。當沒有設(shè)置正則對象的全局匹配標志時lastIndex屬性的值始終為0,每次執(zhí)行匹配僅查找字符串中第一個匹配的項。
- 2 回答
- 0 關(guān)注
- 490 瀏覽
添加回答
舉報
0/150
提交
取消