使用Javascript(或任何javascript库)评估以字符串格式给出的数学表达式

时间:2018-02-22 04:59:25

标签: javascript

用户在此输入输入

 <input type="text" id="expression_text" value="Enter equation.....">

假设他进入

var exp_string=$("#expression_text").val();
//"exp_string=4+6*9+3"

我们如何评估从UI端(Javascript或任何其他JavaScript库)以字符串格式给出的数学表达式    服务器端期望结果只有4 + 6 * 9 + 3 = 61    抱歉我的英语不好

2 个答案:

答案 0 :(得分:0)

我很难理解你的追求。据我了解,你有一个数学分配字符串,你想要将字符串和计算值都返回给后端。

有几种方法可以做到这一点。如果您可以控制输入,那么显而易见的方法是使用eval(),但更快的版本是避免eval并使用Function构造函数:

// I've replaced what would be returned by `val()` with the expected string
var text_input='exp_string=4+6*9+3';       //$("#expression_text").val();

// Performs the calculation and assigns the value to a global `exp_string` variable
Function(text_input)();

// Example of what can be used and what the variables hold
console.log(`${text_input} will equal ${exp_string}`);

重要!
如果我没有注意到有关evalFunction构造函数的安全问题,那将是我的疏忽。如下面的评论所述,eval被认为是“邪恶”的原因。由于缺乏卫生设施和对输入的控制,它打开了危险的XSS攻击和其他攻击的前端。出于这个原因,最好是安全而不是抱歉,不要使用它。

这就是说 - ,这是部分自以为是的 - 它不是无法使用的。它有助于实现目的并且效率很高,但重要的是要研究安全风险并知道它何时适用。

答案 1 :(得分:0)

不要使用eval(),只是不保存。使用像http://mathjs.org/这样的库来完成您的任务。