我正在尝试用 JavaScript 编写简单的计算器。我想检查用户输入是否正确。我写了正则表达式以确保用户输入正确,但它不起作用。我想做的是一个简单的规则,即运算符 (/*-+) 后面应该跟操作数 (0-9),但第一个运算符可以是 - 或 +。下面的正则表达式不起作用。我的错误是什么?
^[-+]?[0-9]{0,}([-+*/]?)[0-9]+$
最佳答案
您的表达式查找可选的 -
或 +
后跟零 或更多数字 ([0-9]{0 ,}
).我认为您可能想要一个或多个 (+
)。同样,([-+*/]?)
中的 ?
使运算符可选。您可能还想捕获各个部分。
It is fine when I have something one operator between two operand but when I do 9+9+9 which is more then two it is not working.
如果你想允许后面有额外的操作符和数字,你必须允许后面的部分重复。
这是我的粗略看法:
^\s*([-+]?)(\d+)(?:\s*([-+*\/])\s*((?:\s[-+])?\d+)\s*)+$
Live Example (但如果您有三个或更多项,则捕获组会发生一些不太正确的事情。)
我所做的更改:
使用
\d
而不是[0-9]
(\d
代表“数字”)将数字和运算符放在捕获组中。
不要让数字或运算符可选。
允许在不同的地方使用可选的空格 (
\s*
)。(?: _________ )+
让括号内的部分重复。允许在第二组数字前面使用
-
或+
,但前提是在运算符后面有一个空格。
关于javascript - 如何使用正则表达式在 javascript 中输入计算器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24234265/