定义正则表达式的问题

时间:2010-05-28 07:32:25

标签: php regex

如何定义数学表达式的正则表达式。请为

定义一个公共正则表达式
5+4
5-3
5*6
6/2

3 个答案:

答案 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));
    }

数字可能包含可选的小数部分和+/-符号。可能有多种平等。