Javascript 在每次匹配的两个子字符串之间替换子字符串

Javascript 在每次匹配的两个子字符串之间替换子字符串,javascript,Javascript,JavaScript中是否有一个内置函数,可以用一系列长度等于子字符串2的数字替换两个子字符串之间的子字符串2,而不是循环整个字符串并手动替换它 例如: 前子字符串:“前” 子字符串后:“后” 如果子字符串2的长度为3=>则替换为字符串011 如果子字符串2的长度为6=>则替换为字符串999999 字符串: “beforeoafter beforefore123456afteradf”之前之后 ooo也将是子字符串2和123456 ooo=>011(因为长度为3) 123456=>999999(

JavaScript中是否有一个内置函数,可以用一系列长度等于子字符串2的数字替换两个子字符串之间的子字符串2,而不是循环整个字符串并手动替换它

例如:

前子字符串:
“前”

子字符串后:
“后”

如果
子字符串2的长度为3
=>则替换为
字符串011

如果
子字符串2的长度为6
=>则替换为
字符串999999
字符串:

“beforeoafter beforefore123456afteradf”之前之后

ooo也将是子字符串2和123456

ooo=>011(因为长度为3)

123456=>999999(因为长度为6)

substring2是前后字符串之间的匹配

结果:


“Before011BeforeAfterBefore999999AfterADF”

您可以使用正则表达式和替换函数:

const input=“beforeoafterbeforefee123456afteradf”;
const expectedOutput=“before1after beforefore999999afteradf”;
常量输出=输入。替换(/(之前(?:(?!之前|之后)。*after)/g,函数(m){
常量before='before';
常量after='after';
const middle=m.substr(before.length,m.length-before.length-before.length-before.length);
如果(中间长度===3){
在+011'之前+之后返回;
}else if(middle.length==6){
在+'99999'之前返回,在+'99999'之后返回;
}
返回m;
});
控制台日志(输出);

log(输出===expectedOutput)如果您希望他人帮助您改进代码,请与他人分享。添加您的代码,问题不太清楚欢迎使用堆栈溢出!请访问,看看有什么和。做一些研究,搜索相关话题等;如果你被卡住了,张贴一段你的尝试,记下输入和预期的输出,最好用一个字母替换3个字符和一组数字。很难猜到这里的规则,因为6股的长度比循环解决方案工作得更好更快!