gpt4 book ai didi

javascript - js 区分正则表达式捕获组

转载 作者:太空宇宙 更新时间:2023-11-04 00:30:54 25 4
gpt4 key购买 nike

javascript/node.js 中有没有办法区分由正则表达式创建的捕获组?例如,此正则表达式: /([A-Z]+\[[^\]]+])|(\d+)/g 在文本上: 9 和 4687 匹配,但不匹配 NUMBER[9] 或 NUMBER[9568] 但是,[401] 应该匹配... 将创建两个捕获组:

  • 第 1 组:NUMBER[9] 和 NUMBER[9568]
  • 第 2 组:9、4687 和 401

我想要的是在文本中的数字周围添加标签NUMBER[]。有没有办法执行类似 text.replace(regexp, 'NUMBER[$&]', SECOND_GROUP) 的操作?

编辑:输出将是 NUMBER[9] 和 NUMBER[4687] 匹配,但不是 NUMBER[9] 或 NUMBER[9568] 但是,[NUMBER[401]] 应该匹配...

最佳答案

您可以在 String#replace() 中使用回调方法作为替换参数检查特定组是否匹配,并在匿名方法内执行适当的替换逻辑:

var regex = /([A-Z]+\[[^\]]+])|(\d+)/g;
var str = `9 and 4687 matches but not NUMBER[9] or NUMBER[9568] However, [401] should match...`;
var res = str.replace(regex, function($0,$1,$2) {
return $2 ? "NUMBER[" + $2 + "]" : $0; // If Group 2 matched, use special value, else paste back the match
});
console.log(res);

$0代表整场比赛,$1代表第1组内容,$2代表第2组内容。

您可以添加更多逻辑来考虑特定的第 1 组比赛处理。

关于javascript - js 区分正则表达式捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40972636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com