前言
-
场景描述
第三方调用接口时,有些特殊字符不允许传参,可能影响存储、或者加解密等问题,下面以斜杠"/“和反斜杠”\"为例,介绍一下通过正则表达式处理特殊字符的思路
实现流程
-
实现代码
@Test public void testInputParamCharset() { // 正则表达式校验参数中不能包含特殊字符 String name = "中山\\浩二/"; Pattern userNameRegex = Pattern.compile("^[/|\\\\]*$"); for (int i = 0; i < name.length(); i++) { String nameChar = name.substring(i,i+1); Matcher m = userNameRegex.matcher(nameChar); if (m.matches()) { System.out.println(name + " 中是含有特殊字符!"); return; } } System.out.println(name + " 中不含有特殊字符!"); }
总结
-
正则表达式中匹配一个反斜杠要用四个反斜杠
分析一下“\\”,第一个斜杠是转义符,第二个斜杠是斜杠本身,第三个斜杠是转义符,第四个斜杠是斜杠本身。
有2点要清楚:
-
字符串里面表示斜杠就需要两个斜杠如“\”
-
正则表达式里的斜杠需要转意,是用“\”标示。
这样就比较好解释:
我们先要表示正则表达式里面的斜杠“\”,然后再用字符串表示出来。而这2个斜杠分别需要一个转义符,这样就成了4个斜杠在正则表达式里面表示一个斜杠。
-
参考链接
-
正则表达式 - 语法
https://www.runoob.com/regexp/regexp-syntax.html
-
正则表达式在线测试
https://c.runoob.com/front-end/854