捕获组正则表达式Javascript匹配返回两个值为什么?

捕获组正则表达式Javascript匹配返回两个值为什么?,javascript,regex,Javascript,Regex,为什么 匹配(/(abc){3}/) 返回两个条目[“abcabc”,“abc”]?“abc”和“abc” 同样地 [“1234”,“1234”]每个regexp周围都有一个隐式捕获组,该组存储在结果0中 第二个结果来自您的捕获组(abc)。大多数regexp实现只保留该捕获组的最后一个匹配项 : 第一捕获组(abc){3} {3}量词-精确匹配3次 重复捕获组将只捕获最后一次迭代。在重复组周围放置一个捕获组以捕获所有迭代,或者如果您对数据不感兴趣,则使用非捕获组 abc逐字匹配字符abc(区

为什么 匹配(/(abc){3}/)

返回两个条目
[“abcabc”,“abc”]
?“abc”和“abc”

同样地


[“1234”,“1234”]

每个regexp周围都有一个隐式捕获组,该组存储在结果0中

第二个结果来自您的捕获组
(abc)
。大多数regexp实现只保留该捕获组的最后一个匹配项

:

  • 第一捕获组
    (abc){3}

    {3}
    量词-精确匹配3次

    重复捕获组将只捕获最后一次迭代。在重复组周围放置一个捕获组以捕获所有迭代,或者如果您对数据不感兴趣,则使用非捕获组

    abc
    逐字匹配字符
    abc
    (区分大小写)

因此,第一个值是整个匹配,即
“abcabc”


第二个值是由
(abc)
捕获的最后一次迭代,即
“abc”

,因为第一个值是整个正则表达式匹配的值,下面的每一个值都对应一个匹配组。您是在问TC39委员会为什么决定这样做(我们无法回答),还是在问这些值的含义(这在?
(abc){3}
中有一个
abc
序列位于第一个捕获组,也是最后一个捕获组。