Javascript : 查找带有捕获的正则表达式以将 a^b 替换为 Math.pow(a, b)

Javascript : find regexp with capture to replace a^b by Math.pow(a, b)

我的字符串如下:

str = "(2+2)^(4*(5+6^(5^6))))";

如您所见,幂可以嵌套在另一个幂中,带或不带括号。

所以我想通过使用正则表达式将 ^ 替换为 javascript 的 Math.pow(a,b) 来转换这个字符串。

一个想法?在此先衷心感谢您。

我认为使用正则表达式来解析表达式对您来说效果不佳...

为什么不使用像 http://mathjs.org/

这样的数学表达式解析器库

这些是您的算法必须执行的步骤:

  1. 找到 "root ^" 字符
  2. 捕获^
  3. 前后的分组
  4. 重复

这里的问题是这种类型的数据结构既是递归的又是非正则的...

  • 它是递归的,因为你可以有无限数量的嵌套括号,并且每个都需要单独计算
  • 这是不规则的,因为例如,您可以有没有括号的组:(2+2)^2

...这使得找到上述 "root ^" 有问题

此外,输入可能并不总是有效(例如,用户忘记关闭括号)。