我有一个文本框,其中的输入是一个简单的数学表达式,例如2+323*4.5/5
或2 + 323*4.5 /5
(我的意思是应该忽略空格)。整数和浮点数都是可能的,并且可以接受作为输入。我想分解该表达式的每个元素(操作数和运算符)并将它们保存到数组中,以便将第一个操作数,第一个运算符和第二个操作数(作为原子计算的参数)发送到PHP页面(服务器),然后在获取服务器的响应后,将第二个运算符和第三个操作数与服务器的前一个响应一起发送,以执行其他原子操作,依此类推。
例如,如果初始字符串为2 + 323*4.5 /5
,则我的数组(结果)应如下所示:
[2,+,323,*,4.5,/,5]。
我使用了match方法,如下所示:
var expr = document.getElementById("txtExpr").value;
var tokens = expr.match(/-*\/?[0-9]/g);
但是我不能使用“ +”号,结果数组不是我想要的。它将运算符连接到下一个操作数。
PS:我也需要接受/获取负数。
最佳答案
"2 + 323*4.5 / 5".match(/\d*\.\d+|\d+|[/*+-]/g);
// >> ["2", "+", "323", "*", "4.5", "/", "5"]