自定义集合正则表达式
有一次遇到要把list集合做成一个正则表达式作为拦截器的验证器弄了半天才搞定,在此做一个备忘。
//定义一个自定义正则表达式集合
private List<Pattern> listUrl = new ArrayList<Pattern>();
//在init方法里面初始化集合,当然也可在其他方法里面使用之前初始化。
String exclusionStr = filterConfig.getInitParameter("EXCLUSIONS");
if (exclusionStr != null && !exclusionStr.isEmpty()) {
log.debug("exclusionStr:" + exclusionStr);
String[] inputs = exclusionStr.split(",");
for (String input : inputs) {
String regex = input.trim().replace("*", "(.*)").replace("?", "(.{1})");
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
if (pattern != null) {
exclusions.add(pattern);
}
}
}
//表达式的使用
if (PatternUtil.isExcluded(listUrl , reqUrl))
//reqUrl是要验证的一个字符串,listUrl 是正则集合,如果匹配成功就会返回true,匹配不成功就会返回false。