一尘不染

安全评估Java中的算术表达式

javascript

我需要在Javascript中评估用户输入的算术表达式,例如“ 2 *(3 + 4)”,但eval出于安全原因,我不想使用它。

我可以去除所有不是数字或运算符的字符,但是我不确定这是否安全,如果用户可以使用,,等功能cos,那会很好sqrt

是否有进行算术表达式评估的Javascript库?


阅读 273

收藏
2020-05-01

共1个答案

一尘不染

您可以尝试使用JavaScript Expression Evaluator:

该库是Raphael Graf的ActionScript Expression Parser的修改版本。当我编写JavaScript FunctionPlotter时,我想要一个更好的替代方法来使用JavaScript的evalfunction。当前没有安全风险,因为您只能在自己的浏览器中运行代码,但数学上却不太方便(Math.pow(2 ^ x)而不是2 ^ x等)。

那么您的代码将是这样的:

console.info ( Parser.evaluate( "2 * (3 + 4)" ) ); //prints 14
2020-05-01