【问题标题】:a Regex to filter an arithmetic expression, prevent multiple consecutive symbols一个正则表达式过滤算术表达式,防止多个连续符号
【发布时间】:2019-08-16 18:50:39
【问题描述】:

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

我创建了这个正则表达式:/[+-/*]{2,}/g 问题是它捕获了所有的重复,所以我最终一起删除了这个标志

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

【问题讨论】:

  • 1+/+2-21+-2-2 会发生什么?第二个例子是一个有效的 JS 表达式。
  • 你要明白的是,所有的算术都是加法。算术中没有减法。所以2-8 真的是2 + -8,其中OPERATOR 总是+,符号总是- 或者什么都没有。
  • 我正在尝试创建一个简单的计算器应用程序,所以它的行为与普通计算器完全一样,所以如果我按 (1+/-1) 我得到 (1-1),只有最后一个符号被认为是正确的

标签: javascript regex filter


【解决方案1】:
let eq = "1+++2-2";
let result = eq.replace(/([+-/*]){2,}/g, "$1");

console.log(result);

// 1+2-2

【讨论】:

  • 是的,我们在这里捕获单个字符“之前”的复数形式。
  • 非常感谢您的回答,非常感谢您花时间回答我的问题,我还想问您是否可以对我的问题进行投票。
猜你喜欢
  • 2021-08-06
  • 1970-01-01
  • 2015-07-02
  • 2021-04-13
  • 1970-01-01
  • 2017-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多