将两个捕获组与 JavaScript 的 replace() 函数一起使用
Using two capturing groups with JavaScript's replace() function
给定这样一个字符串 +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([=10=], ) {
return [=10=].replace(/@/g, );});
//=> +as[23+"AS23D"-23]
[=12=]
表示 [
和 ]
之间的整个字符串,</code> 是第一个捕获组,即 <code>[
.[=17= 之后的数字]
给定这样一个字符串 +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([=10=], ) {
return [=10=].replace(/@/g, );});
//=> +as[23+"AS23D"-23]
[=12=]
表示 [
和 ]
之间的整个字符串,</code> 是第一个捕获组,即 <code>[
.[=17= 之后的数字]