Javascript:找到带有捕获的regexp,用Math.pow替换^ b(a,b)

时间:2015-11-03 15:29:38

标签: javascript regex replace pow

我的字符串如下:

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

正如您所看到的,可以将功率嵌套在具有或不具有括号的另一个功率内。

所以我想通过使用regexp来替换^来通过JavaScript的Math.pow(a,b)替换^。

一个想法?非常感谢您,亲切的。

2 个答案:

答案 0 :(得分:2)

我认为使用正则表达式来解析表达式对你来说不是很好......

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

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

答案 1 :(得分:1)

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

  1. 找到"根^"炭
  2. ^
  3. 之前和之后捕获群组
  4. 重复
  5. 这里的问题是这种类型的数据结构既是递归的又是非常规的......

    • 它是递归的,因为你可以拥有无​​限数量的嵌套括号,并且每个都需要单独评估
    • 这是非常规的,因为,例如,您可以拥有不具有括号的群组:(2+2)^2

    ...这使得找到所说的"根^"问题

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