Javascript 用于过滤算术表达式、防止多个连续符号的正则表达式

Javascript 用于过滤算术表达式、防止多个连续符号的正则表达式,javascript,regex,filter,Javascript,Regex,Filter,我有一个算术表达式,它可能有多个连续的符号(1++2-3)。这会在“eval()”函数中产生错误,我只想删除符号的额外重复,只保留一个 我创建了这个正则表达式:/[+-/*]{2,}/g 问题是它捕捉到了所有的重复,所以我最终把这个符号都去掉了 let eq = '1+++2-2' let regex = /[+-/*]{2,}/g 1+/+2-2或1+-2-2会发生什么情况?第二个例子是一个有效的JS表达式,你需要理解的是所有的算术运算都是加法。算术中没有减法。所以2-8实际上是2+-8,操

我有一个算术表达式,它可能有多个连续的符号(1++2-3)。这会在“eval()”函数中产生错误,我只想删除符号的额外重复,只保留一个

我创建了这个正则表达式:/[+-/*]{2,}/g 问题是它捕捉到了所有的重复,所以我最终把这个符号都去掉了

let eq = '1+++2-2'
let regex = /[+-/*]{2,}/g

1+/+2-2
1+-2-2
会发生什么情况?第二个例子是一个有效的JS表达式,你需要理解的是所有的算术运算都是加法。算术中没有减法。所以
2-8
实际上是
2+-8
,操作符总是
+
,符号总是
-
或者什么都不是。我正在尝试创建一个简单的计算器应用程序,所以它的行为与普通计算器完全一样,所以如果我按like(1+/-1)我得到(1-1),只有最后一个符号被认为是正确的,在这里,我们捕获“之前”复数化的单个字符。
let eq = "1+++2-2";
let result = eq.replace(/([+-/*]){2,}/g, "$1");

console.log(result);

// 1+2-2