繁体   English   中英

如何在 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.555.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM