如何定义数学expression.please正则表达式定义一个通用正则表达式
5+4
5-3
5*6
6/2
发布于 2010-05-28 16:18:47
好的,这里有一个可能比您需要的要复杂一点的(嘿,它是一个正则表达式!)
/^\s*-?\d+(?:\.\d+)?(?:\s*[+*\/\-]\s*-?\d+(?:\.\d+)?)+(?:\s*=\s*-?\d+(?:\.\d+)?)?$/
它允许一个或多个运算,十进制数,以及可选的“等于”部分的结尾。
5 + 7
3 * 2 - 8
80.31 + 12 / 6
5 * 7 - 2 = 33
发布于 2010-05-28 15:37:16
^\d+[+*\-/]\d+$
发布于 2010-05-28 17:43:42
规范很模糊,但这里有一个使用Java中的元正则表达式方法的可读正则表达式。
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));
}
数字可以包括可选的小数部分和+/-
符号。可能有多个等式。
https://stackoverflow.com/questions/2927325
复制相似问题