exec()仅返回第一个匹配项的捕获集,而不返回您期望的匹配项。因此,您真正看到的是
$0(整个匹配项“
a”)和
$1(第一个捕获项),即长度为2的数组。
exec()同时,它的设计使您可以 再次 调用它以获取 下一个
匹配项的捕获项。从MDN:
如果您的正则表达式使用“
g”标志,则可以多次使用exec方法在同一字符串中查找连续的匹配项。这样做时,搜索将从正则表达式的lastIndex属性指定的str的子字符串开始(测试还将使lastIndex属性前进)。

exec()仅返回第一个匹配项的捕获集,而不返回您期望的匹配项。因此,您真正看到的是
$0(整个匹配项“
$1(第一个捕获项),即长度为2的数组。
exec()同时,它的设计使您可以 再次 调用它以获取 下一个
如果您的正则表达式使用“
g”标志,则可以多次使用exec方法在同一字符串中查找连续的匹配项。这样做时,搜索将从正则表达式的lastIndex属性指定的str的子字符串开始(测试还将使lastIndex属性前进)。