使用两个捕获组和JavaScript的replace()函数

Using two capturing groups with JavaScript's replace() function

本文关键字:JavaScript replace 函数 两个      更新时间:2023-09-26

给定这样的字符串+as[23+"AS@D"-@][]之间的所有@实例替换为紧随[后面的数字(在本例中:23(。请使用 JavaScript 回答(建议使用 .replace() (。所以使用这个算法,+as[23+"AS@D"-@]将更改为+as[23+"AS23D"-23]

这是我的正则表达式'[('d+)[^']]*('@*)']第二个捕获组未被捕获(Regexr 告诉我第二个捕获组中没有捕获任何内容(。我需要帮助使第二个捕获组捕获所有@实例

我尝试使用Mozilla Developer寻求帮助,但它不起作用。任何帮助将不胜感激。答案必须有解释。

如果这个问题不够清楚,请在评论中告诉我如何改进。

您可以在 Javascript 中将 replace 与回调函数一起使用:

var s = '+as[23+"AS@D"-@]';
var r = s.replace(/'[('d+)[^']]*']/, function($0, $1) {
                   return $0.replace(/@/g, $1);});
//=> +as[23+"AS23D"-23]

$0表示 [] 之间的整个字符串,$1是第一个捕获组,即紧随[之后的数字。