Javascript 拆分运算符上的数学表达式并将运算符包含在输出数组中

Javascript 拆分运算符上的数学表达式并将运算符包含在输出数组中,javascript,Javascript,我正在尝试在数学运算符上拆分数学字符串。比如说 expression=“7*6+3/2-5*6+(7-2)*5” 我需要将其标记化以生成: expressionaray=[“7”、“5”、“6”、“+”、“3”、“/”、“2”、“-”、“5”、“*”、“6”] 我试着在这里找到解决方案,这就是我得到的 expressionArray=expression.split((?编辑: 这与公认的答案类似,并且作为奖励,不会因为IE8及以下版本中的filter()而失败: var expression

我正在尝试在数学运算符上拆分数学字符串。比如说

expression=“7*6+3/2-5*6+(7-2)*5”

我需要将其标记化以生成:

expressionaray=[“7”、“5”、“6”、“+”、“3”、“/”、“2”、“-”、“5”、“*”、“6”]

我试着在这里找到解决方案,这就是我得到的

expressionArray=expression.split((?编辑:

这与公认的答案类似,并且作为奖励,不会因为IE8及以下版本中的
filter()
而失败:

var expression = "7.2*6+3/2-5*6+(7-2)*5";
var splitUp = expression.match(/[^\d()]+|[\d.]+/g);
document.body.innerHTML = splitUp;

var expression=“7.2*6+3/2-5*6+(7-2)*5”;
var copy=表达式;
expression=expression.replace(/[0-9]+/g,“#”)replace(/[\(\\\\\\\.])]/g,”);
变量编号=复制.拆分(/[^0-9\.]+/);
var操作符=expression.split(“#”).filter(函数(n){return n});
var结果=[];
对于(i=0;i
首先,如果要将正则表达式与
split()一起使用,必须首先创建它:

var expr = new RegExp("(?<=[-+*/])|(?=[-+*/])")  
// note: you missed a ) at the end

var expr=new RegExp(“(?在
“6”、“3”之间是否缺少
+
像1--2这样的表达式是什么?
String1
是一种输入,还是期望的输出?这个问题没有什么意义。
String
不是一个字符串,
String1
是一个数组,其中包含一些(但不是全部)用于分配给
String
的标记。传递给
的值。split()
是一个似乎与任何内容都无关的字符串序列,尽管它看起来像是一个正则表达式。所需的输入和输出不清楚。你说这不是所需的结果,但你也没有说所需的结果是什么。筛选方法在IE 8或更低版本中不起作用,仅供参考。我想在仅限运算符,这不会给出正确的结果,因为我有十进制数或多个数字。例如:7.5*32+2-6。97@min2bro-首先,你没有提到这一点,其次,这是所有的方法,减去更改正则表达式以获得浮点值。@Gabe非常感谢…我将尝试其他方法来完成此操作…注意这个答案(以及下面的答案)不要使用像
5+-5
这样的表达式。在我看来,这仍然是一个很好的答案,只需要小小的修改。你的解决方案很优雅,但你和被接受的答案都有一个bug。下面的表达式
5+-1
返回
['5','+-','1']
,这没有多大意义。不过你还是得到了我的支持;)
var expr = new RegExp("(?<=[-+*/])|(?=[-+*/])")  
// note: you missed a ) at the end