用于验证计算器正确输入的正则表达式

时间:2015-01-28 17:17:13

标签: java regex

我需要完成一些计算器,目前我正处理的问题是我只需要数字(0,1,2,3,4,5,6,7,8,9)和运算符( +, - ,*,/ ,.)在我的JTextField中,这是用户的输入。

目前我的正则表达式如下: String REGEX = "^[0-9]+[.]?[0-9]{0,1}$";这是我在网上找到的一个例子。

我如何才有可能允许这些运营商:+-*/? (点已经完成)

总的想法是让它像Windows计算器一样。
我在这个话题上并不那么强,请提出建议。

编辑:它还需要像()

这样的圆括号

3 个答案:

答案 0 :(得分:4)

以下是符合您要求的示例:

^[\d\+\/\*\.\- \(\)]*$

作为JAVA字符串,这将是:

String regex = "^[\\d\\+\\/\\*\\.\\- \\(\\)]*$";

请注意,我还在此允许的字符列表中添加了一个SPACE。

答案 1 :(得分:2)

以防有人需要更合适的解决方案:

^(\d+[\+\-\*\/]{1})+\d+$

这是更好的,因为这些字符串不会通过:

45++6*6
12+4+
+2-6

您可以在此处进行测试:https://regex101.com/r/zB7vV3/2

答案 2 :(得分:0)

我的正则表达式

^[\d\(]+[\d\+\-\*\/\(\)]+[\d\)]+$

通过:

  • 3 + 3 * 5 *(2 + 1)

还不好:

  • 1 + 2)
  • 1 +)