多的不说,直接上demo
String phone = "12345678983";
phone.replaceAll("(\\d{3})\\d{5}(\\d{3})", "$1*****$2");
利用String自带的replaceAll方法进行替换达到隐藏效果,此方法的第一个参数为分组正则表达式
参数注释:
- (\d{3})\d{5}(\d{3}):此参数需分解为三部分,(\d{3})为一组,\d{5}为一组,(\d{3})为一组
- $1*****$2:$1和$2表示正则表达式中第一组和第二组中规定长度将不做替换,*****表示\d{5}需要替换后的字符串。
按照上面demo中替换后的手机号为:123*****983
注意:
- 当手机号长度小于正则中定义的长度时将不做替换,如果手机号大于正则中的长度时能正常替换,只是多出的值将不做替换;
- replaceAll方法执行后将返回一个新的字符串;
- *****的长度并不是要与\d{5}的长度一致,此处只是将原字符串中的值替换成某字符串。