java处理中文脱敏

方法一,简单的,不计算文字长度去设置脱敏

java 复制代码
public static String dataDesensitization1(String content){
        String regex = "(.{2}).*(.{2})";
        return ReUtil.replaceAll(content, regex, matcher -> {
            try {
                if (CharSequenceUtil.isBlank(matcher.group())) {
                    return "";
                }
                String start = matcher.group(1);
                String end = matcher.group(2);
                return start + "****" + end;
            } catch (Exception e) {
                return "";
            }
        });
    }

方法二,计算长度,取头尾三个文字,其余为**

java 复制代码
return ReUtil.replaceAll(content, "(?<=.{2}).*(?=.{2})", matcher -> {
        try {
            if (CharSequenceUtil.isBlank(matcher.group())) {
                return "";
            }
            String middle = matcher.group();
            String desensitizedMiddle = ""; // 脱敏后的中间部分
            for (int i = 0; i < middle.length(); i++) {
                // 遍历中间部分的每个字符,只保留第一个和最后一个字符,其他用 "*" 代替
                if (i == 0 || i == middle.length() - 1) {
                    desensitizedMiddle += middle.charAt(i);
                } else {
                    desensitizedMiddle += "*";
                }
            }
            return desensitizedMiddle;
        } catch (Exception e) {
            return "";
        }
    });

一些其他的正则

java 复制代码
PHONE = "((13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8})";
java 复制代码
ID_CARD_FIFTEEN = "([1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{2}[0-9Xx])";//15位身份证
java 复制代码
ID_CARD_EIGHTEEN = "([1-9]\\d{5}\\d{4}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx])";//18位身份证
相关推荐
故事和你91几秒前
洛谷-【图论2-2】最短路1
开发语言·数据结构·c++·算法·动态规划·图论
csbysj20208 分钟前
Git 工作流程
开发语言
倒流时光三十年12 分钟前
Java String.split() 方法陷阱:为什么你应该始终使用 split(regex, -1)
后端
johnrui23 分钟前
JUC之AQS
java·开发语言·jvm
Full Stack Developme24 分钟前
Spring 模块介绍
java·后端·spring
沫璃染墨32 分钟前
红黑树完全指南:从核心原理到插入验证全实现
开发语言·c++·算法
Mahir0832 分钟前
Redis 核心机制:数据过期策略与淘汰策略深度解析
数据库·redis·后端·缓存·面试
yu859395833 分钟前
基于 QT5.7.0 的八线激光雷达点云聚类实现
开发语言·qt·聚类
多敲代码防脱发37 分钟前
Spring进阶(BeanFactory与ApplicationContext)
java·数据库·spring boot·后端·spring
yoyo_zzm43 分钟前
汇编到PHP:五大编程语言核心特性全解析
开发语言·汇编·php