java用正则表达式脱敏手机号

本文介绍了如何在Java中使用正则表达式实现手机号码的敏感信息脱敏,提供了两种不同的脱敏方法,适用于不同场景的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一种正则形式:在Java开发中有时候需要对敏感字段数据脱敏,废话不多说,直接上代码。

    /**
     * 脱敏手机号
     *
     * @param str
     * @return 脱敏后字符串
     */
    public static String maskPhone(String str) {
        return str.replaceAll("(13[0-9]|14[5-9]|15[0-35-9]|16[25-7]|17[0-8]|18[0-9]|19[0135689])\\d{4}(\\d{4})", "$1*****$2");
    }

测试结果如图

 当然大家可以根据需要定义正则表达式脱敏其他数据。

二种正则形式

    /**
     * 脱敏手机号
     *
     * @param str
     * @return 脱敏后字符串
     */
    public static String maskPhone(String str) {
        return str.replaceAll("(recipientPhone|msg|mobile|phone|phoneNo|手机号|电话)(=|=\\[|\":\"|:|:|=')(13[0-9]|14[5-9]|15[0-35-9]|16[25-7]|17[0-8]|18[0-9]|19[0135689])(\\d{4})(\\d{4})(]|\"|'|)", "$1$2$3*****$5$6");
    }

regex说明
(mobile|手机号|phoneNo|recipientPhone):脱敏关键字,多个之间以英文|分隔

(=|=\[|\":\"|:|:|='):关键字后的符号,多个之间以英文|分隔

匹配手机号前三位数字:(13[0-9]|14[5-9]|15[0-35-9]|16[25-7]|17[0-8]|18[0-9]|19[0135689])

(\d{4}):匹配手机号中间四位4位数字

(\d{4}):匹配手机号后4位数字

(\]|\"|'|):匹配值后的其他字符

$n即对应第n对括号(从1开始),上图中共有6对括号,$1$2$3****$5$6则表示,仅有第4组内容被****替代,其他内容按原内容显示.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值