Javascript 如何使用.exec()访问/替换全局匹配正则表达式中的捕获组?

Javascript 如何使用.exec()访问/替换全局匹配正则表达式中的捕获组?,javascript,regex,Javascript,Regex,我正在尝试访问所有捕获组以进行替换,在这种情况下,我们将所需结果括在括号中: (有关预期结果,请参见注释) 常量文本='无意义相关无意义相关无意义'; const matcher=/(.*)(相关的)(.*)/gi//不确定我的正则表达式,因为我不知道如何实际测试它 让我们期望的结果;//胡说八道胡说八道胡说八道 我见过while循环方法,但它总是只关注匹配器中的单个捕获组,因此我无法收集我需要了解的内容 这个问题可能有重复的地方,但我已经花了一个多小时搜索,还没有找到。许多人显然提出了同样

我正在尝试访问所有捕获组以进行替换,在这种情况下,我们将所需结果括在括号中

(有关预期结果,请参见注释)


常量文本='无意义相关无意义相关无意义';
const matcher=/(.*)(相关的)(.*)/gi//不确定我的正则表达式,因为我不知道如何实际测试它
让我们期望的结果;//胡说八道胡说八道胡说八道
我见过
while
循环方法,但它总是只关注
匹配器中的单个捕获组,因此我无法收集我需要了解的内容

这个问题可能有重复的地方,但我已经花了一个多小时搜索,还没有找到。许多人显然提出了同样的问题,但在所有这些问题中,多捕获组方面似乎都被忽略了


我愿意接受关于如何做到这一点的其他建议,尽管我的用例可能会变得更复杂,涉及更多的捕获组和操作,所以我认为这是最好的方法。我知道
matchAll
,但我也不知道它如何解决我的问题我需要低级别访问索引、匹配项和整个shebang。

您有什么原因不能使用或不想使用?这正是它的目的:匹配和替换
exec
只查找匹配项,不替换

*编辑:既然你说你想要低级别的访问,我就改变我的例子来展示如何使用回调函数,并做一些有趣的事情,比如获取匹配的索引并将其添加到括号后。我还添加了匹配单词前后的空白捕获,以显示此方法如何处理多个捕获组

const text='无意义相关无意义相关无意义';
常量匹配器=/(\s+)(相关)(\s+)/gi;
功能cb(匹配、p1、p2、p3、i、fullTxt){
返回p1+'('+p2+')['+i+']'+p3;
}
让desiredResult=text.replace(匹配器,cb);

console.log(desiredResult)括号替换只是一个简单的示例。我正在尝试执行复杂的多过程字符串操作,但我无法理解
exec
/
如何与多个组一起工作。人们基本上只是说,“哦,你不能使用
match
来访问带有全局正则表达式的捕获组”-但是,每个使用全局正则表达式的示例都使用一个捕获组-\没有必要用捕获组来包装整个模式,有一个
$&
反向引用。@Slbox经过编辑以反映你对“低级别访问。“使用
replace
和回调函数是最强大的。经典的过度思考情况。我一直使用replace回调,但从不在匹配组之后使用参数:请提供现实生活中的问题描述。将匹配项替换为括号中的匹配项与替换(/word/g,($&)