我有這個包含數學方程的字串。我想根據數字之間的運算子對其進行拆分。因為后來我想用它eval()來做數學運算。
像這樣:
var myString = "25 15-10/555"
var newString = myString.split(/([x -/])/).filter(Boolean);
我已經成功地拆分了我想要的字串:
output: ["25", " ", "15", "-", "10", "/", "555"]
問題是如果我的字串中有小數點。它將分隔一個實際上是小數點的數字:
var myString = "2.5 15-55.50"
var newString = myString.split(/([x -/])/).filter(Boolean);
output: ["2", ".", "5", " ", "15", "-", "55", ".", "50"]
如您所見,它分隔2.5和55.50。我怎樣才能實作這個輸出:["2.5", " ", "15", "-", "55.50"]?
我應該如何處理我的正則運算式?或者它可能有什么問題?
uj5u.com熱心網友回復:
您幾乎有正確的正則運算式,/([x -/])/ 的問題是減號被解釋為字符類中的范圍說明符,在這種情況下表示從加號 ( ) 到斜杠 (/)。您可以做的是用反斜杠轉義減號:
/([x \-/])/
或者將其移動到字符類的末尾:
/([x /-])/
uj5u.com熱心網友回復:
這是因為-在您的字串列中充當范圍運算子并且具有含義all characters between from " " till "/"(類似于[a-z].
將其移至串列末尾或轉義:
var myString = "2.5 15-55.50"
console.log(myString.split(/([x \-/])/));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/415600.html
標籤:
下一篇:什么是v-if在反應
