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

因為要處理從身份證讀取到的有效期時間,所以用到了replaceAll這個方法,類似如下代碼:

String s1 = s.replaceAll(".", "-");
但是idea在英文句號上邊進行了警告提示,說是在方法中發現疑似正則表達式,也就是我文章題目那串英文。
雖然警告,但是這個寫法是可以正常用得,如下圖:

 

 我就想,既然能正常用,為什麼還要警告呢,那必定是有風險存在,,,經百度發現,,確實有風險,但不是這個方法,而是split切割字符串方法,如下圖示例:

 

 使用split切割字符串失敗,導致後續獲取不到值,百度上說實際上是split底層調用什麼方法導致的,具體沒有研究,有興趣的小夥伴可以研究研究@我學習一下。

解決方案就是,不寫有風險的代碼,使用轉義字符進行包裹就可以了,如下圖寫法:

 

 

這樣idea不報警告,方法也能正常使用,,這應該是正確寫法,應該沒有風險了

Tags: