import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ConcealNumber {
public static void main(String[] args) {
// 用*隐藏手机号
String testPhoneStr = "13800138000";
testPhoneStr = concealAllPhoneNum(testPhoneStr);
System.out.println(testPhoneStr);
// 用*隐藏身份证号
String testIDCardStr = "530121198808228647";
testIDCardStr = hideAllIdCardNum(testIDCardStr);
System.out.println(testIDCardStr);
}
/**
* 隐藏手机号
*
* @param phoneNum
* @return
*/
public static String concealAllPhoneNum(String phoneNum){
Pattern pattern = Pattern.compile("((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}");
Matcher matcher = pattern.matcher(phoneNum);
StringBuffer sb = new StringBuffer();
try {
while(matcher.find()) {
String phoneStr = matcher.group();
phoneStr = phoneStr.substring(0, 3) + "****" + phoneStr.substring(7, phoneStr.length());
matcher.appendReplacement(sb,phoneStr);
}
matcher.appendTail(sb);
} catch (Exception ex) {
ex.printStackTrace();
}
return sb.toString();
}
/**
* 隐藏身份证号码
*
* @param idCardNum
* @return
*/
public static String hideAllIdCardNum(String idCardNum){
Pattern pattern = Pattern.compile("(\\d{6})(19|20)(\\d{2})(1[0-2]|0[1-9])(0[1-9]|[1-2][0-9]|3[0-1])(\\d{3})(\\d|X|x)");
Matcher matcher = pattern.matcher(idCardNum);
StringBuffer sb = new StringBuffer();
try {
while(matcher.find()) {
String idCardStr = matcher.group();
int len=idCardStr.length();
if(len>=9){
idCardStr = idCardStr.replaceAll("(.{"+(len<12?3:6)+"})(.*)(.{4})", "$1" + "****" + "$3");
}
matcher.appendReplacement(sb,idCardStr);
}
matcher.appendTail(sb);
} catch (Exception ex) {
ex.printStackTrace();
}
return sb.toString();
}
}
输出结果:
138****8000
530121****8647