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

时间:2016-10-05 18:20:37

标签: javascript regex

为什么 "abcabcabc".match(/(abc){3}/);

返回两个条目["abcabcabc", "abc"]?两个" abcabcabc"和" abc"

类似地,

["1234", "1234"]

2 个答案:

答案 0 :(得分:0)

每个正则表达式都有一个隐含的捕获组,它存储在结果0中。

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

答案 1 :(得分:0)

  

/(abc){3}/

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

         

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

         

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

         

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

  •   

所以第一个值是整个匹配,即"abcabcabc"

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