![](/img/trans.png)
[英]How to convert a math equation string to json structure and parse using JavaScript?
[英]How to not split decimal point in math equation string using Regex in Javascript
我有这个包含数学方程的字符串。 我想根据数字之间的运算符对其进行拆分。 因为后来我想用它和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
分开。 我怎样才能实现这个 output: ["2.5", "+", "15", "-", "55.50"]
?
我应该如何处理我的正则表达式? 或者它可能有什么问题?
您几乎有正确的正则表达式,/([x+-/])/ 的问题是减号被解释为字符 class 中的范围说明符,在这种情况下表示从加号 (+) 到斜杠 (/)。 您可以做的是用反斜杠转义减号:
/([x+\-/])/
或者将其移动到字符 class 的末尾:
/([x+/-])/
这是因为-
在您的字符列表中充当范围运算符,并且具有all characters between from "+" till "/"
含义(类似于[az]
。
将其移至列表末尾或转义:
var myString = "2.5+15-55.50" console.log(myString.split(/([x+\-/])/));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.