在javascript中分解数学表达式

时间:2013-02-10 15:27:13

标签: javascript regex string

我有一个文本框,其中输入是一个简单的数学表达式,如2+323*4.5/52 + 323*4.5 /5(我的意思是应该忽略空格)。 整数和浮点数都是可能的,并且可以作为输入接受。我想拆分这个表达式的每个元素(操作数和运算符)并将它们保存到一个数组中,这样我就可以发送第一个操作数,第一个操作符和第二个操作数(作为参数)获取服务器的响应后,将第二个运算符和第三个操作数与服务器的先前响应一起发送,以便执行另一个原子操作等等。

例如,如果初始字符串是2 + 323*4.5 /5,我的数组(结果)应该如下所示:

[2,+,323,*,4.5,/,5]。

我使用了匹配方法如下:

var expr = document.getElementById("txtExpr").value; 
var tokens = expr.match(/-*\/?[0-9]/g);

但我不能使用“+”符号,结果数组不是我想要的。它将运算符连接到下一个操作数。

PS:我需要接受/获得负数。

1 个答案:

答案 0 :(得分:2)

"2 + 323*4.5 / 5".match(/\d*\.\d+|\d+|[/*+-]/g);
// >> ["2", "+", "323", "*", "4.5", "/", "5"]