正则对字符串中手机号加密
取出手机号,再加密
public static void main(String[] args) {String reg = "(\\d{3})\\d{4}(\\d{4})";String replacesStr = "$1****$2";String nickName = "22_z3g_11111111111";Boolean result = checkNickName(nickName);String phone = getNum(nickName);String newPhone = phone.replaceAll(reg, replacesStr);log.info("newPhone:", newPhone);}private static String getNum(String num) {if (num == null || num.length() == 0) {return "";}Pattern pattern = Pattern.compile("(?<!\\d)(?:(?:1[358]\\d{9})|(?:861[358]\\d{9}))(?!\\d)");Matcher matcher = pattern.matcher(num);StringBuffer bf = new StringBuffer(64);while (matcher.find()) {bf.append(matcher.group()).append(",");}int len = bf.length();if (len > 0) {bf.deleteCharAt(len - 1);}return bf.toString();}public static boolean checkNickName(String nickName) {// 过滤出纯数字nickName = Pattern.compile("[^0-9]").matcher(nickName.trim()).replaceAll("");if (nickName.length() < 11) {return false;}char[] chars = nickName.toCharArray();ArrayList<String> phoneList = new ArrayList<>();//所有11位数字的集合for (int i = 0; i < chars.length; i++) {StringBuilder stringBuilder = new StringBuilder();for (int j = 0; j < 11; j++) {if (i + j < chars.length) {stringBuilder.append(chars[i + j]);}}if (stringBuilder.length() == 11) {phoneList.add(stringBuilder.toString());}}List<String> regexList = new ArrayList<String>();/*** 手机号码* 移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188* 联通:130,131,132,152,155,156,185,186* 电信:133,1349,153,180,189,181(增加)*/regexList.add("^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$");/*** 中国移动:China Mobile* 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188*/regexList.add("^1(34[0-8]|(3[5-9]|5[017-9]|8[2378])\\d)\\d{7}$");/*** 中国联通:China Unicom* 130,131,132,152,155,156,185,186*/regexList.add("^1(3[0-2]|5[256]|8[56])\\d{8}$");/*** 中国电信:China Telecom* 133,1349,153,180,189,181(增加)*/regexList.add("^1((33|53|8[019])[0-9]|349)\\d{7}$");for (String phone : phoneList) {for (String regex : regexList) {Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(phone);if (matcher.matches()) {return true;}}}return false;}
}
正则对字符串中手机号加密相关推荐
- php 正则获取数字,php结合正则获取字符串中数字的几种方法
本篇文章主要介绍php结合正则获取字符串中数字的几种方法,感兴趣的朋友参考下,希望对大家有所帮助. php结合正则获取字符串中数字<?php $patterns = "/\d+/&qu ...
- java利用正则截取字符串中的数字
java利用正则截取字符串中的数字 String str = "xxx第47297章33";String regex = "\\d*";Pattern p = ...
- 【去重】php正则过滤字符串中多次重复出现内容为1个
本篇文章主要讲解,使用用正则去重字符串中的多次出现的字符信息 作者:任聪聪 重复现象 以空格为例: 解决办法一.foreach+explode+implode进行替换 思路:利用foreach+exp ...
- JS 使用正则匹配字符串中所有大括号包含的数据,转换成数组形式
JS 使用正则匹配字符串中所有大括号包含的数据,转换成数组形式 .match(/{[^}{]*?}/g)
- 用正则匹配字符串中连续的字符
用正则匹配字符串中连续的字符 1.通过利用正则来匹配字符串中有两个或两个以上的连续字符的子字符串 方法如下: <script>var reg =/(.)\1{1,}/g;//正则表达式va ...
- php 正则匹配字符串中的所有数字
php 正则匹配字符串中的所有数字 function isHaveKC($str){preg_match_all('/\d+/',$str,$arr);print_r($arr); } echo is ...
- 正则匹配字符串中的相同项
正则匹配字符串中的相同项,再精确匹配数字并取出最大值 业务中多层嵌套的数组对象,每个对象都有一个唯一值,需要过滤这唯一值,如果有新对象加入,需要把新的对象也添加一个唯一值 这时考虑把数组对象转换为字符 ...
- java 正则 提取数字_java使用正则提取字符串中的数字(例如提取短信中的验证码)详解...
使用java正则可以很方便的从字符串中提取符合条件的内容. 1.提取字符串中所有的手机号: private void getPhoneNum(String smsBody) { Pattern pat ...
- JS简单正则得到字符串中特定的值
这里就直接看示例吧,示例的目的是为了获取 a 字符串中的 c02806015 <script language="javascript"> var a = '礼品6款入 ...
- Python 正则提取字符串中的地区
方法一 re正则 这里我查找的优先级是 市->省->自治区->县->区 代码实现 import rePATTERN = r'([\u4e00-\u9fa5]{2,5}?(?:市 ...
最新文章
- HDU - 4614 Vases and Flowers 线段树+二分
- 错误C4146的解决方法
- 菜鸟玩基金(四)——注意事项
- 面向函数范式编程(Functional programming)
- oracle ebs 多组织屏蔽的研究
- goahead content-length为0时的问题
- 即插即用+任意blur的超分辨率重建——DPSR
- Mac下png转icns图标脚本
- 80-10-010-原理-Java NIO-简介
- element ui下拉框实现
- Windows系统服务相关的端口
- 全球首次!玩5G日本来了一波骚操作
- java23种设计模式(十六) -- 中介者模式(行为设计模式)
- oracle数据库有哪些权限,ORACLE数据库中权限有哪些?
- 公共数据库介绍~世界银行World Bank
- Visual Basic Script 程序参考手册-学习第4天:数组列表及Msgbox函数
- 计算机映像缺失磁盘如何修复,电脑映像损坏怎么修复_windows提示损坏的映像怎么处理...
- Centos在NAT模式下的设置
- Android Studio 微信分享功能(包括可以分享到朋友圈,分享到朋友)
- 电力行业数字孪生技术应用白皮书(2022)