验证java中的数学变量表达式

时间:2016-11-08 07:59:39

标签: java

验证数学变量表达式的好方法。我们是否可以使用堆栈或使用正则表达式。

我已经去了http://www.sanfoundry.com/java-program-implement-evaluate-expression-using-stacks/

注意:表达式不包含括号。 例如:

有效:

  • x+3-y/2
  • x+y
  • 2+4+e

无效:

  • x++4+8
  • e-3r
  • e+r34-

如何验证上述表达式?我需要验证用户在java中提供的数学表达式输入

1 个答案:

答案 0 :(得分:0)

如果不允许使用括号(即嵌套表达式),则可以通过简单的正则表达式进行验证:

final Pattern pattern = Pattern.compile("([0-9]+|[a-z]+)([-+*/]([0-9]+|[a-zAZ]+))*");

for (String s : Arrays.asList("123", "x+3-y/2", "x+y", "2+4+e", "x++4+8", "e-3r", "e+r34-", "---x+3-y/2")) {
    System.out.format("%5s %s\n", pattern.matcher(s).matches(), s);
}

输出

 true 123
 true x+3-y/2
 true x+y
 true 2+4+e
false x++4+8
false e-3r
false e+r34-
false ---x+3-y/2