求教!!! 高手解释一波为什么这个js的正则表达式能匹配到两个空字符串???

https://img4.mukewang.com/5b8384570001283a05510076.jpg

阿波罗的战车
浏览 812回答 1
1回答

弑天下

第一, 那个不是空字符串第二, 括号在正则中表示“捕获”,比如 '123abc'.replace(/(\d+)abc/, '$1')其中 $1便表示第一个括号中匹配的内容,即123。第三, 本例中,为了说明清楚问题,改为 'a'.match(/()a/), 所得结果将是 ["a", "", index: 0, input: "a", groups: undefined], 结果中的第一个元素为正则表达式()a匹配到的全部字符串,第二个元素为第一个“捕获”()的结果,这里表示单词边界,相当于正则表达式里的\b。回到题目,题目中的写法等价于 ''.match(/(\b)/),由于正则表达式主体就只有捕获,故结果中第一个元素和第二个元素相同,看起来像个"空字符串",实际不是“空”,请对比第三点理解。
打开App,查看更多内容
随时随地看视频慕课网APP