如何定义数学表达式的正则表达式。请为
定义一个公共正则表达式5+4
5-3
5*6
6/2
答案 0 :(得分:4)
好的,这可能比你需要的更复杂(嘿,这是一个正则表达式!)
/^\s*-?\d+(?:\.\d+)?(?:\s*[+*\/\-]\s*-?\d+(?:\.\d+)?)+(?:\s*=\s*-?\d+(?:\.\d+)?)?$/
它允许一个或多个操作,十进制数字,以及最后的“等于”部分。
5 + 7
3 * 2 - 8
80.31 + 12 / 6
5 * 7 - 2 = 33
答案 1 :(得分:0)
^\d+[+*\-/]\d+$
答案 2 :(得分:0)
规范含糊不清,但这里有一个可读的正则表达式,在Java中使用元regexing方法。
String regex =
"num(?:opnum)*"
.replace("op", "\\s*[*/+-]\\s*")
.replace("num", "\\s*[+-]?\\d+(?:\\.\\d+)?\\s*");
String[] tests = {
"5+4", // true
"5 - 3", // true
"5 * 6 - 4", // true
"3.14159 = 0", // true
"A = B", // false
"5+ -4", // true
"5 * +4", // true
"5++5", // true
"5+++5", // false
"5+5+" // false
};
for (String test : tests) {
System.out.println(test + " " + test.matches(regex));
}
数字可能包含可选的小数部分和+/-
符号。可能有多种平等。