javascript - 如何使用正则表达式在 javascript 中输入计算器?

标签 javascript regex

我正在尝试用 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 (但如果您有三个或更多项,则捕获组会发生一些不太正确的事情。)

我所做的更改:

  1. 使用 \d 而不是 [0-9](\d 代表“数字”)

  2. 将数字和运算符放在捕获组中。

  3. 不要让数字或运算符可选。

  4. 允许在不同的地方使用可选的空格 (\s*)。

  5. (?: _________ )+ 让括号内的部分重复。

  6. 允许在第二组数字前面使用 -+,但前提是在运算符后面有一个空格。

关于javascript - 如何使用正则表达式在 javascript 中输入计算器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24234265/

相关文章:

javascript - 有没有办法让消费者使用 KafkaJS 获取最后 n 条消息?

javascript - 如何将数据从 JavaScript 发送到 Python

javascript - 正则表达式不起作用 - 最少 8 个字符、1 个数字、1 个特殊字符和 1 个大写字母

javascript - 钛 - Facebook 授权() - "An error occurred"

javascript - HTML 工作表中的多个脚本之一不起作用

javascript - 正则表达式特殊字符?

sql - 需要为文本正文中的特定单词格式化 BigQuery 中的表格

javascript - 用于测试数字中加号或减号的正则表达式

javascript - 触发 ng-model.$formatters 以编程方式运行

php - 当正则表达式正常时,为什么 preg_match 找不到标签之间的字符串?