手动调用 replaceAll 将指定字符位置字符替换成*实现脱敏。需要写好相应的正则表达式。
下面对手机号|身份证|护照进行脱敏操作。抛砖引玉,希望兄弟们在替换其他字符的时候可以借鉴参考使用;
import org.apache.commons.lang.StringUtils;
/**
* @author youlu
* @date 2022/12/13 11:11
*/
public class CommonUtils {
// 手机号码前三后四脱敏
public static String mobileEncrypt(String mobile) {
if (StringUtils.isEmpty(mobile) || (mobile.length() != 11)) {
return mobile;
}
return mobile.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
}
//身份证前三后四脱敏
public static String idEncrypt(String id) {
if (StringUtils.isEmpty(id) || (id.length() < 8)) {
return id;
}
return id.replaceAll("(?<=\\w{3})\\w(?=\\w{4})", "*");
}
//护照前2后3位脱敏,护照一般为8或9位
public static String idPassport(String id) {
if (StringUtils.isEmpty(id) || (id.length() < 8)) {
return id;
}
return id.substring(0, 2) + new String(new char[id.length() - 5]).replace("\0", "*") + id.substring(id.length() - 3);
}
}