目录

方式1:substring分割

方式2:正则匹配验证

方式3:StringUtils.overlay

1 先引入commons-lang3,这个基本每个项目都用到

2 数据处理

3 测试结果


方式1:substring分割

String phone = "13123456789";
String phoneNumber = phone.substring(0, 3) + "****" + phone.substring(7, phone.length());
System.out.println("phone总长度:" + phone.length());
System.out.println("phone前3位:" + phone.substring(0, 3));
System.out.println("phone中4位:" + phone.substring(3, 7));
System.out.println("phone后4位:" + phone.substring(7, phone.length()));
System.out.println("phone中4*:" + phoneNumber);

结果为:

phone总长度:11
phone前3位:131
phone中4位:2345
phone后4位:6789
phone中4*:131****6789

方式2:正则匹配验证

phone = "13123456789";
phoneNumber = phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
System.out.println("正则phone中4*:" + phoneNumber);String idCard = "123456789987654321";
//$1、$2、……表示正则表达式里面第一个、第二个、……括号里面的匹配内容
String idCardNumber = idCard.replaceAll("(\\d{4})\\d{10}(\\w{4})", "$1****$2");
System.out.println("身份证号长度:" + idCard.length());
System.out.println("正则idCard中4*:" + idCardNumber);

正则phone中4*:131****6789
身份证号长度:18
正则idCard中4*:1234****4321

方式3:StringUtils.overlay

1 先引入commons-lang3,这个基本每个项目都用到

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.7</version>
</dependency>

2 数据处理

这里主要用StringUtils工具的overlay(String str,String overlay,int start,int end)方法可以在指定位置进行字符序列替换,从start索引处开始(包含)到end-1索引处为止进行替换

import org.apache.commons.lang3.StringUtils;/*** @Author: liangbl* @Date: 2019/5/7 14:05* @Description: 数据隐私显示 手机号,身份证号和银行卡号等*/
public class PrivacyDimmer {private static final String OVERLAY = "****";private static final int START = 3;private static final int END = 7;/*** 139****0504** @param content* @return*/public static String maskMobile(String content) {if (StringUtils.isEmpty(content)) {return "";}return StringUtils.overlay(content, OVERLAY, START, END);}/*** 过滤邮箱账号* 132****99308084911** @param email* @return*/public static String maskEmail(String email) {if (StringUtils.isEmpty(email)) {return "";}String at = "@";if (!email.contains(at)) {return email;}/*** 这里主要逻辑是需要保留邮箱的注册商 比如@qq.com*/int length = StringUtils.indexOf(email, at);String content = StringUtils.substring(email, 0, length);String mask = StringUtils.overlay(content, OVERLAY, START, END);return mask + StringUtils.substring(email, length);}/*** 身份证打码操作* 132****99308084911** @param idCard* @return*/public static String maskIdCard(String idCard) {if (StringUtils.isEmpty(idCard)) {return "";}return StringUtils.overlay(idCard, OVERLAY, START, END);}
}

3 测试结果

@Test
public void overlay() {logger.info("手机号 {}", PrivacyDimmer.maskMobile("13661014724"));logger.info("手机号 {}", PrivacyDimmer.maskMobile("13"));logger.info("邮箱 {}", PrivacyDimmer.maskEmail("845885222@qq.com"));logger.info("邮箱不够四位 {}", PrivacyDimmer.maskEmail("22@qq.com"));logger.info("邮箱错误 {}", PrivacyDimmer.maskEmail("22qq.com"));logger.info("假身份证号 {}",PrivacyDimmer.maskIdCard("132128199308084911"));
}
20:17:51.730 [main] INFO com.lockbur.open.AppTest - 手机号 136****4724
20:17:51.740 [main] INFO com.lockbur.open.AppTest - 手机号 13****
20:17:51.741 [main] INFO com.lockbur.open.AppTest - 邮箱 845****22@qq.com
20:17:51.741 [main] INFO com.lockbur.open.AppTest - 邮箱不够四位 22****@qq.com
20:17:51.742 [main] INFO com.lockbur.open.AppTest - 邮箱错误 22qq.com
20:17:51.742 [main] INFO com.lockbur.open.AppTest - 假身份证号 132****99308084911

参考:http://www.cnblogs.com/wangzn/p/7210295.html

https://blog.csdn.net/WK313753744/article/details/87867720

java数据脱敏处理,手机号,身份证号和银行卡号打码展示相关推荐

  1. wps或Excel将身份证号、银行卡号复制到Excel中的时候出现E+问题的解决方案

    我们在日常的坐标过程中难免会用到文字和图表的处理工具,也就是我们常说的office办公工具,现在比较常用的是两款,一款是WPS,一款式MSOffice,那遇到复制身份证号复制银行卡号出现错误该怎么解决 ...

  2. Java对姓名, 手机号, 身份证号, 地址进行脱敏

    替换几位就用几个*号 一.姓名 1, 脱敏规则: 只显示第一个汉字,比如李某某置换为李**, 李某置换为李* private static String desensitizedName(String ...

  3. [前台]---js+jquery校验姓名,手机号,身份证号

    记一次前台验证姓名,手机号,身份证号的代码,复制即用,前提是有引入jquery. var name = "姓名"if(!is_forbidName(name)){alert(&qu ...

  4. EXCEL规范数据输入教程-验证身份证号

    EXCEL日常工作中经常会输入身份证号码,一不小心就可能出错,今天大飞老师就分享这样一个示例EXCEL规范数据输入教程-验证身份证号. 我们首先要保证在EXCEL中能正确输入身份证号码(PS:身份证号 ...

  5. Java实现对手机号、身份证号、护照号脱敏

    目录 1.Java原生代码实现: 2.使用 Hutool 工具实现: 背景: 我们在项目中经常会需要用到用户的敏感信息,比如手机号.身份证号.护照号: 当数据需要在页面上进行展示的时候就需要进行脱敏, ...

  6. 地址 脱敏规则_Java对姓名, 手机号, 身份证号, 地址进行脱敏

    替换几位就用几个*号 一.姓名 1, 脱敏规则: 只显示第一个汉字,比如李某某置换为李**, 李某置换为李* private staticString desensitizedName(String ...

  7. Java身份证号脱敏、校验身份证号合法性、根据身份证号获取年龄、根据生日获取年龄

    这里写目录 身份证号编码规则 身份证号脱敏 身份证号合法性校验 根据身份证号获取年龄 根据生日日期获取年龄 根据身份证号获取年龄.生日的Map集合 身份证号编码规则 第一.二位表示省(自治区.直辖市. ...

  8. wps姓名隐藏为星号_EXCEL里如何给姓名手机号身份证号等隐私信息设置星号隐藏起来?...

    在EXCEL表格里如图有时为了保护隐私,需要把姓名啊手机啊身份证号啊这些敏感的个人信息以星号显示,要如何操作呢?下面演示一下操作步骤: 一.星号姓名 1.在需要设置的单元格里输入=REPLACE(E2 ...

  9. 正则表达式验证手机号 身份证号 银行卡号 姓名输入

    手机号验证var mobile = /^1[3|4|5|7|8]\d{9}$/;mobile.test(value);生日格式转换'20171102'.replace(/^(\d{4})(\d{2}) ...

最新文章

  1. css,css,javascript实现一个简单的计算器
  2. 查看某段代码或语句的被调用路径的方法小结
  3. 电脑有回声_专递课堂互动教室现场有回声怎么办?
  4. 在有赞工作两年半的感受
  5. python爬虫用多线程还是多进程_python爬虫之多线程、多进程爬虫
  6. 工作两个月的感受随笔
  7. 互联网晚报 | 9月22日 星期三 | 中国电信控股股东拟40亿元增持;碧桂园服务100亿收购富良环球;搜狗浏览器论坛即将下线...
  8. 《Python编程从入门到实践》记录之将Python函数存储在模块中(import、import*)
  9. 敏捷开发一千零一问系列之十三:故事点好还是人天好?
  10. [译] Promise A+ 标准
  11. linux rhce教程,RHCE之路_Linux教程_Linux公社-Linux系统门户网站
  12. hbase0.95 官方文档
  13. mysql数据库系统时区_mysql 杂记 —— 时区问题
  14. [BZOJ4246]两个人的星座(计算几何)
  15. codeup刷题 2.6小节——C/C++快速入门->函数 ——《算法笔记》(胡凡)
  16. CSS-margin外边距
  17. 计算机 手机原理是什么,什么是手机投屏,手机投屏到电脑上的原理
  18. 景点门票销售管理系统 基于 python实现gui界面 之 笔记
  19. 1234组成无重复三位数
  20. mysql启动异常:The server quit without updating PID file

热门文章

  1. iOS中通过UIColor生成UIImage
  2. ASP.NET C# 用后台代码实现 跨域名访问 返回HTML代码
  3. 英语四六级翻译15:天津古文化街
  4. 字段校验 css样式_CSS伪类:根据输入的表单字段样式
  5. Cookies 的读写
  6. 借助 Windows 事件转发进行入侵检测
  7. jQuery getJSON两种参数传递
  8. 酸酸甜甜的杨梅数据库
  9. 一代计算机巨星的陨落!图灵奖得主 Edmund Clarke 因感染“新冠”逝世
  10. 学习计算机科学一月有余的总结与规划