简单点就是依据括号了。
/**
* @author eric
* @date 2021/6/30
*/
public class OgnlCheckUtil {
/**
* 左括号 1,右括号 -1,最后总和0则匹配
*
* @param ognl
* @return
*/
public static void check(String ognl) {
int top = 0;
char[] express = ognl.toCharArray();
for (int i = 0; i < express.length; i++) {
if (express[i] == '(') {
top++;
} else if (express[i] == ')') {
if (top > 0) {
top--;
} else {
//top <= 0,无左括号却有一个右括号,有一个右括号不匹配
throw new RuntimeException("多了)");
}
}
}
if (top > 0) {
throw new RuntimeException("多了(");
} else if (top < 0) {
throw new RuntimeException("多了)");
}
}
}