验证数学变量表达式的好方法。我们是否可以使用堆栈或使用正则表达式。
我已经去了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中提供的数学表达式输入
答案 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