如果我运行此命令:
/([^\/]+)+/g.exec('/a/b/c/d');
我得到这个:
["a", "a"]
但是如果我运行这个:
'/a/b/c/d'.match(/([^\/]+)+/g);
然后,我得到了预期的结果:
["a", "b", "c", "d"]
有什么不同?
exec带有全局正则表达式的表达式应在循环中使用,因为它仍将检索所有匹配的子表达式。所以:
exec
var re = /[^\/]+/g; var match; while (match = re.exec('/a/b/c/d')) { // match is now the next match, in array form. } // No more matches.
String.match 为您执行此操作,并丢弃捕获的组。
String.match