用javascript正则表达式递归替换



我有一个字符串:pow(pow(487,2(+873,2(,我从正在创建的计算器中生成。我想把它转换成((487^2(+873(^2。

我使用将pow(487,2(转换为487^2没有问题

var string = `pow(487,2)`;
console.log(string.replace(/pow((.*?),(.*?))/g,'$1^$2'));

问题是,我不知道如何用pow(pow(487,2(+873,2(递归处理它,变成((487^2(+873(^2。请帮忙。

您可以编写递归函数来实现这样的

var string = `pow(pow(487,2)+873,2)`;
var numberOfOccurance = string.match(/pow/g).length;
const makeTranspile=(str,nooc)=>{
const newStr=str.replace(/pow((.*?),(.*?))/g,'($1)^$2');
if(nooc>1)
{
return makeTranspile(newStr,nooc-1)
}
return newStr
}

const finalString=makeTranspile(string,numberOfOccurance);
console.log(finalString);

最新更新