给定这样的字符串+as[23+"AS@D"-@]
将@
和[
之间的所有]
实例替换为[
之后的数字(在这种情况下: 23
)。请使用JavaScript回答(建议使用.replace()
)。因此,使用此算法,+as[23+"AS@D"-@]
将更改为+as[23+"AS23D"-23]
这是我的正则表达式\[(\d+)[^\]]*(\@*)\]
未捕获第二个捕获组(Regexr告诉我在第二个捕获组中没有捕获任何内容)。我需要帮助才能使第二个捕获组捕获@
我尝试过使用Mozilla Developer寻求帮助,但它没有用。任何帮助将不胜感激。答案必须有解释。
如果这个问题不够明确,请在评论中告诉我如何改进。
答案 0 :(得分:0)
您可以在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
是第一个捕获组,即[
之后的数字。