看正则,遇到了一些理解上的疑问,一个是
*?
?
MDN上的解释是
Matches like * and from above,howeverthematchisthesmallestpossiblematch。
*这样,如果与前一项一致,则一致是最小的可能性。
另一个问题是参数g,它的解释是全局模式,那么全局模式是什么意思呢? 最小匹配是什么意思呢?
首先,从最小匹配的例子来看:
var re=/'.*?' //;
' ' foo''bar''.match(re ) )。
//return 'foo '
MDN在最小匹配中使用了上述例子,如果不用上面的例子呢? 最小匹配项与“foo”不匹配。 试一下吧
var re=/'.*'/;
' ' foo''bar''.match(re ) )。
//return 'foo''bar '
因此,如果不使用最小匹配,匹配将进行到字符串的末尾',而忽略前面的'。 这个模式之所以会变成贪婪模式,是因为有多少匹配,*或者带到后面。则采用最小匹配,如果找到第一个成功的匹配,则返回匹配结果。
那么,全球匹配在这个例子中会产生什么样的效果呢?
var re=/'.*?' /g;
' ' foo''bar''.match(re ) )。
//return [''foo ',' ' bar'']
虽然最小匹配只能匹配第一个foo,但添加全局匹配时,匹配将继续进行,后面的bar也将匹配。 这可能就是全球匹配的应用。