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