正则表达式只返回第一组

恩布莱克本

可能很简单,但我正在尝试从此正则表达式返回捕获组...

const expression = /^\/api(?:\/)?([^\/]+)?\/users\/([^\/]+)$/g

我正在执行此操作的代码如下...

const matchExpression = (expression, pattern) => {

    let match;
    let matches = [];

    while((match = expression.exec(pattern)) != null) {
         matches.push(match[1]);
    };

    return matches;
};

当与/api/v1/users/1...匹配时,我期望以下结果

['v1', '1']

但是相反,似乎只能得到一个始终是第一组的结果。

该表达式本身很好,并且已在多种服务中进行了测试,但似乎无法弄清楚为什么它不能按预期工作。

任何帮助将不胜感激。

威克多·斯特里比尤(WiktorStribiżew)

您必须确保将第二个捕获组内容添加到结果数组中:

while((match = expression.exec(pattern)) != null) {
     matches.push(match[1]);
     matches.push(match[2]); // <- here
};

由于您要匹配整个字符串,因此可以使用/^\/api(?:\/)?([^\/]+)?\/users\/([^\/]+)$/正则表达式(因为您要匹配整个字符串,因此不需要g全局修饰符)并将代码简化为:

const matchExpression = (expression, pattern) => {    
    let matches = pattern.match(expression);
    if (matches) {
        matches = matches.slice(1);
    }
    return matches;
};

关键是您可以使用String#match不带全局修饰符的正则表达式来访问捕获组内容。

演示:

var expr = /^\/api(?:\/)?([^\/]+)?\/users\/([^\/]+)$/;
var matches = "/api/v1/users/1".match(expr);
if (matches) {
  console.log(matches.slice(1));           
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Grep第一组正则表达式

来自分类Dev

查找第一组连续数字php正则表达式

来自分类Dev

正则表达式将第一组与“-”匹配

来自分类Dev

正则表达式模式格式以获取第一组

来自分类Dev

在第一组正则表达式中需要空格

来自分类Dev

正则表达式多组,第一组不包括最后一组

来自分类Dev

.net 中的正则表达式 - 匹配引号中的第一组,忽略嵌套引号

来自分类Dev

正则表达式提取字符串中的第一组数字,然后提取所有单词

来自分类Dev

在第一组中添加文字后,如何不将其包含在正则表达式中?

来自分类Dev

正则表达式负前瞻问题确保只有第一组中没有重复字符

来自分类Dev

为什么我在java正则表达式中只找到一组

来自分类Dev

正则表达式只匹配一组数字

来自分类Dev

在正则表达式中仅返回一组具有 OR 条件的组

来自分类Dev

如何使SED仅替换搜索表达式中的第一组字符

来自分类Dev

正则表达式仅匹配一组

来自分类Dev

提取一组单词的正则表达式

来自分类Dev

有条件的正则表达式:仅返回一组

来自分类Dev

正则表达式只返回第一个比赛?

来自分类Dev

python正则表达式,只返回第一个匹配项

来自分类Dev

查找最后一组正则表达式的第一个元素的索引?

来自分类Dev

Python正则表达式返回一组而不是两组。我在这里想念什么?

来自分类Dev

正则表达式:治疗组为可选的,如果它不存在,但如果只存在之前捕捉到前一组

来自分类Dev

正则表达式:需要匹配一组字符而不匹配另一组字符

来自分类Dev

正则表达式:如何捕获一组括号,而不是另一组

来自分类Dev

正则表达式检查字符串是否只给出了一组符号并在内部某处定义了字符串

来自分类Dev

使用正则表达式查找一组单词

来自分类Dev

python中的正则表达式-不间断地找到一组数字

来自分类Dev

如何使一组正则表达式字符可选?

来自分类Dev

正则表达式匹配行首或一组字符

Related 相关文章

  1. 1

    Grep第一组正则表达式

  2. 2

    查找第一组连续数字php正则表达式

  3. 3

    正则表达式将第一组与“-”匹配

  4. 4

    正则表达式模式格式以获取第一组

  5. 5

    在第一组正则表达式中需要空格

  6. 6

    正则表达式多组,第一组不包括最后一组

  7. 7

    .net 中的正则表达式 - 匹配引号中的第一组,忽略嵌套引号

  8. 8

    正则表达式提取字符串中的第一组数字,然后提取所有单词

  9. 9

    在第一组中添加文字后,如何不将其包含在正则表达式中?

  10. 10

    正则表达式负前瞻问题确保只有第一组中没有重复字符

  11. 11

    为什么我在java正则表达式中只找到一组

  12. 12

    正则表达式只匹配一组数字

  13. 13

    在正则表达式中仅返回一组具有 OR 条件的组

  14. 14

    如何使SED仅替换搜索表达式中的第一组字符

  15. 15

    正则表达式仅匹配一组

  16. 16

    提取一组单词的正则表达式

  17. 17

    有条件的正则表达式:仅返回一组

  18. 18

    正则表达式只返回第一个比赛?

  19. 19

    python正则表达式,只返回第一个匹配项

  20. 20

    查找最后一组正则表达式的第一个元素的索引?

  21. 21

    Python正则表达式返回一组而不是两组。我在这里想念什么?

  22. 22

    正则表达式:治疗组为可选的,如果它不存在,但如果只存在之前捕捉到前一组

  23. 23

    正则表达式:需要匹配一组字符而不匹配另一组字符

  24. 24

    正则表达式:如何捕获一组括号,而不是另一组

  25. 25

    正则表达式检查字符串是否只给出了一组符号并在内部某处定义了字符串

  26. 26

    使用正则表达式查找一组单词

  27. 27

    python中的正则表达式-不间断地找到一组数字

  28. 28

    如何使一组正则表达式字符可选?

  29. 29

    正则表达式匹配行首或一组字符

热门标签

归档