在Javascript中使用插入符作为指数

时间:2014-02-27 00:20:00

标签: javascript regex math

我正在尝试创建一个简单的图形计算器,用户输入f的函数(如f(x)= x ^ 2 + 2x + 6)。基本上,javascript用一些数字替换函数中的x,然后使用eval()计算函数。问题是,我希望用户能够键入x ^ 2而不是默认的javascript,这将是Math.pow(x,2)。我猜它会成为一些正则表达式,但我对它们的经验很少,并且发现它们真的令人困惑,个人而言。是否可以将x ^ 3-x ^ 2等语句转换为Math.pow(x,3)-Math.pow(x,2)??

非常感谢。

2 个答案:

答案 0 :(得分:4)

您希望使用看起来与

相似的正则表达式
(.+)\^(.+)

这将匹配两个选择,然后使用这样的匹配替换该字符串的实例。

Math.pow($1, $2)

Javascript支持使用String.prototype.replace

中的函数选项进行此类操作

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter

答案 1 :(得分:0)

1)是的,这是可能的。如果您解析用户输入的内容,您可以自己轻松编程。无论你在哪里看到x ^ n,只需将其转换为Math.pow(x,n)。然后只有eval。 这将适用于一个变量的多项式。

2)如果你想更普遍地解决这个问题(对于更广泛的数学函数类), 你需要提出一些语法并从用户输入中构建一个AST。

http://en.wikipedia.org/wiki/Abstract_syntax_tree