Javascript 用于过滤算术表达式、防止多个连续符号的正则表达式
我有一个算术表达式,它可能有多个连续的符号(1++2-3)。这会在“eval()”函数中产生错误,我只想删除符号的额外重复,只保留一个 我创建了这个正则表达式:/[+-/*]{2,}/g 问题是它捕捉到了所有的重复,所以我最终把这个符号都去掉了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,操
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