在某航空集团,系统参数必须过滤一下字符,于是正则表达式处理拦路了!

需求:

系统输入框(所有输入框),所有URL,过滤以下关键字和特殊字符(下述字符,有哪些影响到业务系统使用的,请具体列出,并说明原因)

Sql关键字(前后带空格,大小写):”and”, “exec”, “count”, “chr”, “mid”, “master”, “or”, “truncate”, “char”, “declare”, “join”

特殊符号1(前后不带空格,大小写):”insert”, “select”, “delete”, “update”,”create”,”drop”,

特殊符号2(前后不带空格):,/*,*/,’(英文半角单引号),|,; ,“&”,“$” ,“%”,“”” (英文双引号)  ,“\”,“()”, “+”,“,”(英文逗号)

特殊符号3(前后不带空格,大小写): “0x0d”(回车),“0x0a”(换行)

辛辛苦苦写个4个小时,重要搞定了这个:

public static String filterTextByHna(String text){
// 清除掉所有特殊字符
String regEx = “([<>’|;@&$%()+,\”\\\\])|(/\\*(?:.|[\\n\\r])*?\\*/)|”
+”(\\b\\s(and|exec|count|chr|mid|master|or|truncate|char|declare|join)\\s\\b)|”
+”(\\b(insert|select|delete|update|create|drop|0x0d|0x0a)\\b)”;
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(text.toLowerCase());
return m.replaceAll(“”).trim();
}

不错,效果不错,嘎嘎