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

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

请先 登录 后评论

1 个回答

xxxxxa

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

请先 登录 后评论