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位身份证
相关推荐
yaoxin5211233 小时前
384. Java IO API - Java 文件复制工具:Copy 示例完整解析
java·开发语言·python
我叫黑大帅3 小时前
通过eino-ext如何正常indexer RAG?
后端·面试·go
NotFound4863 小时前
实战指南如何实现Java Web 拦截机制:Filter 与 Interceptor 深度分享
java·开发语言·前端
Ava的硅谷新视界4 小时前
用了一天 Claude Opus 4.7,聊几点真实感受
开发语言·后端·编程
rabbit_pro4 小时前
Python调用onnx模型
开发语言·python
一 乐5 小时前
医院挂号|基于springboot + vue医院挂号管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·医院挂号管理系统
浪客川5 小时前
【百例RUST - 010】字符串
开发语言·后端·rust
鱼鳞_5 小时前
Java学习笔记_Day29(异常)
java·笔记·学习
烟锁池塘柳05 小时前
一文讲透 C++ / Java 中方法重载(Overload)与方法重写(Override)在调用时机等方面的区别
java·c++·面向对象
一叶飘零_sweeeet5 小时前
深入拆解 Fork/Join 框架:核心原理、分治模型与参数调优实战
java·并发编程