问题:
"baddad".match(/([bd]ad?)*/)
为什么匹配的是dad而不是bad。
回答:
不是不匹配bad,而是已经匹配过了,* 号为贪婪模式,所以第一次匹配到 bad 之后会继续往后吞并字符,最后发现后面还有一个 dad 也适合,于是便把 baddad 全部匹配了,第二次匹配是分支匹配,前面的 [bd] 是两个分支,刚才第一个分支已经匹配完了,进入第二个分支
,也就是匹配 dad,所以第二个结果是dad就显而易见了。
问题:
"baddad".match(/([bd]ad?)*/)
为什么匹配的是dad而不是bad。
回答:
不是不匹配bad,而是已经匹配过了,* 号为贪婪模式,所以第一次匹配到 bad 之后会继续往后吞并字符,最后发现后面还有一个 dad 也适合,于是便把 baddad 全部匹配了,第二次匹配是分支匹配,前面的 [bd] 是两个分支,刚才第一个分支已经匹配完了,进入第二个分支
,也就是匹配 dad,所以第二个结果是dad就显而易见了。