java Suspicious regex expression “.” in call to ‘replaceAll()’ 问题延展

因为要处理从身份证读取到的有效期时间,所以用到了replaceAll这个方法,类似如下代码:

String s1 = s.replaceAll(".", "-");
但是idea在英文句号上边进行了警告提示,说是在方法中发现疑似正则表达式,也就是我文章题目那串英文。
虽然警告,但是这个写法是可以正常用得,如下图:

 

 我就想,既然能正常用,为什么还要警告呢,那必定是有风险存在,,,经百度发现,,确实有风险,但不是这个方法,而是split切割字符串方法,如下图示例:

 

 使用split切割字符串失败,导致后续获取不到值,百度上说实际上是split底层调用什么方法导致的,具体没有研究,有兴趣的小伙伴可以研究研究@我学习一下。

解决方案就是,不写有风险的代码,使用转义字符进行包裹就可以了,如下图写法:

 

 

这样idea不报警告,方法也能正常使用,,这应该是正确写法,应该没有风险了

Tags: