如何使用正则表达式计算器输入与javascript

How to use regular expression for calculator input with javascript?

本文关键字:javascript 输入 计算器 何使用 正则表达式      更新时间:2023-09-26

我正在尝试用JavaScript编写简单的计算器。我想检查用户输入是否正确。我写正则表达式,以确保用户输入是正确的,但它不工作。我想做的是一个简单的规则,即操作符(/*-+)之后应该是操作数(0-9),但第一个操作符可以是-或+。下面的正则表达式不起作用。我错在哪里?

^[-+]?[0-9]{0,}([-+*/]?)[0-9]+$

表达式查找可选的-+,后面跟着或多个数字([0-9]{0,})。我想你可能需要一个或多个(+)。类似地,([-+*/]?)中的?使操作符可选。您可能还想捕获各个部分。

当我在两个操作数之间有一个操作符时,它是好的,但是当我做9+9+9时,它大于2,它不起作用

如果你想允许其他的操作符和数字跟在它们后面,你必须允许后面的部分重复。

这是我的粗略理解:

^'s*([-+]?)('d+)(?:'s*([-+*'/])'s*((?:'s[-+])?'d+)'s*)+$

实时示例(但是如果您有三个或更多术语,则捕获组会发生一些不太正确的事情。)

我所做的改变:

  1. 使用'd而不是[0-9] ('d代表"数字")

  2. 将数字和操作员放在捕获组中

  3. 不要让数字或操作符可选

  4. 允许空格('s*)在不同的位置

  5. (?: _________ )+是让这些父级中的部分重复的。

  6. 允许在第二组数字前加-+,但必须在运算符后加空格。

^[-+]?

是正确的,但是

[0-9]{0,}

不是,你想要+量词,如果你使用{0,}(这是相同的*),你可能有"+*9"是正确的。然后,

([-+*/]?)[0-9]+

是错误的,你要:

([-+*/]+[-+]?[0-9]+)*

例如,*-523+4234/-34(可以对负数或正数使用操作数,也可以对不精确的数字使用操作数,这意味着明显是正的)

最后,你会得到这样的东西:

^[-+]?[0-9]+([-+*/]+[-+]?[0-9]+)*$

当然,你可以用'd

代替class [0-9]