我需要在Javascript中评估用户输入的算术表达式,例如“ 2 *(3 + 4)”,但eval出于安全原因,我不想使用它。
eval
我可以去除所有不是数字或运算符的字符,但是我不确定这是否安全,如果用户可以使用,,等功能cos,那会很好sqrt。
cos
sqrt
是否有进行算术表达式评估的Javascript库?
您可以尝试使用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