js中正则表达式中的贪婪与非贪婪匹配的问题 ```js "abc".replac?

js中正则表达式中的贪婪与非贪婪匹配的问题 ```js "abc".replac?

阅读全文
请先 登录 后评论
  • 0 关注
  • 0 收藏 73 浏览
  • 略问用户 提出于 2020-10-22 17:37:28

2 个回答

xxxxxa
问题出在?上 先看第二个例子,一个问号,此时仅表达对前一个修饰词[a-z]取0-1次,此时依旧是贪婪模式,因此选择匹配到结果a,以此类推,匹配到三个结果 再看第一个例子,[a-z]??,此时第一个问号仅表示对前面重复0-1次,后一个问号无法继续表示计数,因此后一个?表示非贪婪模式 此时编译器先看[a-z]?匹配到了a,但是后面的非贪婪模式让它放弃了,因此匹配了空字符串,此时位置1(即a这个字母)已经匹配完毕了,所以下次搜索从b开始匹配,因此匹配到了4个空字符串 思考题:'abc'.split(/([a-z]?)?/)返回什么?
请先 登录 后评论
xxxxxa
[a-z]? 匹配一个小写字母0次或1次,默认是贪婪匹配,就是匹配1次,所以会匹配'a'而不是'',最后匹配结尾空串,一共四次
请先 登录 后评论