我試圖在數學運算符上拆分數學字符串。例如在Javascript中分割運算符的數學表達式
String = 7*6+3/2-5*6+(7-2)*5
String1 = ["7","*","6","+","3","/","2","-","5","*","6"]
我想在這裏尋找解決方案,這就是我得到
String1=String.split("(?<=[-+*/])|(?=[-+*/]")
,但看起來這是不是取了String1中所期望的結果。
我試圖在數學運算符上拆分數學字符串。例如在Javascript中分割運算符的數學表達式
String = 7*6+3/2-5*6+(7-2)*5
String1 = ["7","*","6","+","3","/","2","-","5","*","6"]
我想在這裏尋找解決方案,這就是我得到
String1=String.split("(?<=[-+*/])|(?=[-+*/]")
,但看起來這是不是取了String1中所期望的結果。
var expression = "7.2*6+3/2-5*6+(7-2)*5";
var copy = expression;
expression = expression.replace(/[0-9]+/g, "#").replace(/[\(|\|\.)]/g, "");
var numbers = copy.split(/[^0-9\.]+/);
var operators = expression.split("#").filter(function(n){return n});
var result = [];
for(i = 0; i < numbers.length; i++){
result.push(numbers[i]);
if (i < operators.length) result.push(operators[i]);
}
console.log(result);
編輯:
這就像接受的答案,並作爲獎金在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;
您的解決方案非常優雅,但您和接受的答案都有錯誤。下面的表達式'5 + -1'返回'['5','+ - ','1']',這沒有多大意義。儘管如此,您仍然得到我的upvote;) –
首先,如果你想使用正則表達式與split()
你必須首先創建它:
var expr = new RegExp("(?<=[-+*/])|(?=[-+*/])")
// note: you missed a) at the end
可悲的是,在大多數瀏覽器的正則表達式引擎不支持lookbehinds,所以它不會工作無論如何。你必須在循環中做到這一點。
是不是缺少'「6」,「3」' – epascarello
之間的'+'? –
'String1'是一種輸入還是所需的輸出? – JJJ