String的replaceAll方法中的正則表達式用法


項目里面 需要對已手機號碼進行 如下的顯示

比如15088688388 要顯示為150****8388的效果

實現這個簡單的效果 方法有很多

我想試試用正則表達式去實現

查了點資料最終試出來以下方法可行

System.out.println("15088688388".replaceAll("(\\d{3})(\\d{4})","$1****"));

輸出結果:150****8388

首先對replaceAll方法的第一個參數進行解釋

第一個參數指定了需要替換的地方

(\\d{3})表示"15088688388" 這個字串的前3位,即"150",視為第1組,跟第二個參數的$1相對應,(\\d{4})則表示跟在前三位之后的4位,即"8868",視為第2組。

當然(\\d{3}),也可以寫成(150) 這種子串,,(\\d{4})可以寫成(8868),所以最終也可以寫成這樣System.out.println("15088688388".replaceAll("(150)(8868)","$1****"));

replaceAll方法的第二個參數表示對需要替換的地方怎么個替換法

在第二個參數的"$1****"中,$1表示第一個參數中的第1組,即(\\d{3}),也即"150"。"****"是追加在"150"后面,"$1****"表示"150****"。同樣,如果第二個參數里面出現$2,就表示第一個參數的第二組,就是(\\d{4}),即"8868"。

需要注意的是,如果第一個參數定義了幾個組,第二個參數中沒出現相對應的分組$,那就是去掉的意思。上面那個例子中,$2沒出現,相當於replace.("8868", "")的作用。

還有$0表示整個字符串的意思,即第一個參數的所有分組組成的字串,上述例子的(\\d{3})(\\d{4}),即"1508868"。

 

再舉例一個

String str = "012345678231206546123";   

System.out.println(str.replaceAll("(123)(45678)", "$1.jsp"));

打印出的結果是:

0123.jsp231206546123

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM