java 手机号脱敏如何处理

java 手机号脱敏如何处理

作者:Joshua Lee发布时间:2026-02-12阅读时长:0 分钟阅读次数:5

用户关注问题

Q
如何在Java中实现手机号的部分隐藏以保护隐私?

我想用Java代码对用户的手机号进行脱敏处理,只显示部分数字,其他数字用星号替代,有哪些简单有效的方法?

A

Java实现手机号脱敏的常用方法

可以使用字符串的substring方法提取手机号的前几位和后几位,然后用字符串拼接的方式将中间部分替换成星号。例如,保留前三位和后四位,中间四位用替代,代码示例:
String phone = "13812345678";
String desensitized = phone.substring(0, 3) + "
" + phone.substring(7);
这样处理后,手机号部分敏感信息就被隐藏了,既保证了用户隐私,又能显示部分信息进行辨识。

Q
有没有现成的Java库可以帮助手机号脱敏?

除了自己写代码实现手机号脱敏,有没有开源库或工具包可以快速完成这项功能?

A

使用开源工具实现手机号脱敏

在Java生态中,有些工具库如Apache Commons Lang、Google Guava能辅助字符串处理,但没有专门针对手机号脱敏的库。可结合正则表达式和字符串操作自行实现。也可以使用正则表达式替换手机号中间几位为星号,示例:
phone.replaceAll("(\d{3})\d{4}(\d{4})", "$1****$2");
这样无需引入额外库,代码简洁且易于维护。

Q
Java中如何用正则表达式完成手机号隐私保护?

想用正则表达式在Java中批量处理手机号,实现中间数字隐藏,具体该怎么写正则?

A

Java正则表达式实现手机号码中间段脱敏

可以利用Java的String.replaceAll方法配合正则表达式实现脱敏。正则表达式"(\d{3})\d{4}(\d{4})"匹配手机号前三位和后四位,中间四位数字匹配但不显示。调用replaceAll("(\d{3})\d{4}(\d{4})", "$1****$2")即可把中间四位替换成星号。此方法直观且适合批量处理字符串中的手机号。