为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

阿波罗的战车 2018-08-26 12:55:33
查看完整描述

1 回答

?
弑天下

TA贡献1818条经验 获得超7个赞

第一, 那个不是空字符串
第二, 括号在正则中表示“捕获”,比如 '123abc'.replace(/(\d+)abc/, '$1')其中 $1便表示第一个括号中匹配的内容,即123
第三, 本例中,为了说明清楚问题,改为 'a'.match(/()a/), 所得结果将是 ["a", "", index: 0, input: "a", groups: undefined], 结果中的第一个元素为正则表达式()a匹配到的全部字符串,第二个元素为第一个“捕获”()的结果,这里表示单词边界,相当于正则表达式里的\b

回到题目,题目中的写法等价于 ''.match(/(\b)/),由于正则表达式主体就只有捕获,故结果中第一个元素和第二个元素相同,看起来像个"空字符串",实际不是“空”,请对比第三点理解。


查看完整回答
反对 回复 2018-08-27
  • 1 回答
  • 0 关注
  • 809 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信