Java 检测字符是否存在手机号或返回该手机号
/**
* 手机号码
* 移动: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(增加)
*/
private static final String PHONE_ALL = "^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
*/
private static final String PHONE_MOBILE = "^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
*/
private static final String PHONE_UNICOM = "^1(3[0-2]|5[256]|8[56])\\d{8}$";
/**
* 中国电信:China Telecom
* 133,1349,153,180,189,181(增加),199
*/
private static final String PHONE_TELECOM = "^1((33|53|99|8[019])[0-9]|349)\\d{7}$";
/**
* @function 检测该字符串是否包含手机号
* @author zhaoxutao
* @date 2019年8月19日 11:10
* @param String
* @return boolean true:包含,false:无
* @version 2.0.2
*/
public static boolean checkIncludePhone(String str) {
if (StringUtils.isBlank(str)) {
return true;
}
return (boolean) checkNickName(str,1);
}
/**
* @function 获取该字符串中的手机号
* @author zhaoxutao
* @date 2019年8月19日 11:10
* @annotation 该方法返回多个手机号
* @param String
* @return String 返回手机号
* @version 2.0.2
*/
@SuppressWarnings("unchecked")
public static List<String> checkGetPhone(String str) {
if (StringUtils.isBlank(str)) {
return null;
}
return (List<String>) checkNickName(str,2);
}
/**
* 检查昵称是否包括手机号
* @param String 校验字符 type 1:返回Boolean 2:返回手机号
* @return 包括:true:null
*/
private static Object checkNickName(String nickName,int type) {
// 过滤出纯数字
nickName = Pattern.compile("[^0-9]").matcher(nickName.trim()).replaceAll("");
List<String> list = new ArrayList<String>();
if (nickName.length() < 11) {
return type==1?false:list;
}
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>();
regexList.add(PHONE_ALL);
regexList.add(PHONE_MOBILE);
regexList.add(PHONE_UNICOM);
regexList.add(PHONE_TELECOM);
for(String phone : phoneList){
for (String regex : regexList) {
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(phone);
if (matcher.matches()) {
if (type == 1) {
return true;
}else {
list.add(phone);
}
}
}
}
return type==1?false:new ArrayList<>(new HashSet<>(list));
}
Java 检测字符是否存在手机号或返回该手机号相关推荐
- java utf-8字符表_Java中的ASCII、Unicode和UTF-8字符编码集
首先讲一下几种字符的编码方式: 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态 ...
- Java IO: 字符流的Piped和CharArray
转载自 Java IO: 字符流的Piped和CharArray 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本章节将简要介绍管道与字符数组相 ...
- java判断是否第一次出现_利用java判断字符首次出现的位置,java替换最后一个特定字符...
利用java判断字符首次出现的位置利用爪哇判断字符首次出现的位置, 目的: (学习视频分享:java视频教程 实现代码如下: 导入Java.util.收藏品: 导入Java.util.LinkedLi ...
- java的字符定义_Java字符串定义及常用方法
String.StringBuffer和StringBuilder String修饰的是不可变的字符串,而StringBuffer和StringBuilder类的对象是可以被修改的. StringBu ...
- java 检测目录下的文件_如何在Java中检查文件是目录还是文件
java 检测目录下的文件 java.io.File class contains two methods using which we can find out if the file is a d ...
- java字符串字符排列组合_如何在Java中查找字符串的所有排列
java字符串字符排列组合 In this tutorial, we will learn how to find the permutation of a String in a Java Prog ...
- 【JAVA】-- 字符流(Reader、Writer)
InputStream和OutputStream类在读写文件时操作的都是字节,如果希望在程序中操作字符,则可以使用字符流:FileReader对象返回的字符流是char,而InputStream对象返 ...
- java 字节流 字符流 的详细介绍
1.IO流 1.1 IO流的概念 我们把数据的传输,可以看成一种数据的流动,按照流动的方向,以内存为基准,分为输入input和输出output,即流向内存的是输入流,流出内存的叫输出流. java中I ...
- java验证字符是否为字母_Java程序检查字符是否为字母
Java程序检查字符是否为字母 在此程序中,您将学习检查给定字符是否为字母.这是使用Java中的if...else语句或三元运算符完成的. 示例1:使用if...else语句检查字母的Java程序 p ...
- java 检测表情符号_关于Java:检查字母是否为表情符号
我想检查字母是否是表情符号. 我发现了一些类似的问题,并找到了这个正则表达式: private final String emo_regex ="([\\u20a0-\\u32ff\\ud8 ...
最新文章
- ASP.NET 2.0 读取配置文件[INI](示例代码下载)
- The “data“ option should be a function that returns a per-instance value in component definitions
- iphone闪退修复工具_iOS14到底怎么样?汇总2866部iPhone的升级体验
- 记忆化搜索 codevs 2241 排序二叉树
- 在eclipse里如何快速定位到某一行?
- html 前端传数据流,jquery – 使用Node.js流式传输数据
- android获取网络视频缩略图,Android 获取缩略图,网络视频,或者本地视频
- 线程池的使用与没使用的区别
- java语言生日蛋糕代码_AcWing 168. 【Java】生日蛋糕
- Ubuntu18.04之星际译王及辞典
- BS CS 优缺点比较 及 适应场合 (部分转载+个人见解)
- Python科学计算和数据分析库简介
- 主流H5、Js 3D游戏引擎和框架
- 3文聚焦:RNA m6A甲基化修饰在不同农作物中的研究进展(马铃薯+水稻+玉米+小麦)|易基因
- 【BurpSuite学习篇】四:Scanner 漏洞扫描模块
- JavaScript:Promise进阶知识
- html5 css3 图片画廊,js和CSS3 3D立方体图片画廊特效
- 【BZOJ】4292: [PA2015]Równanie
- 嵌入式(二十):并行接口
- Java批量建立文件夹
热门文章
- 自学PLC编程如何找资源
- SLAM和SFM有什么区别?
- python自动翻译视频字幕_python自动翻译实现方法
- redis集群原理及搭建
- Windows平台安装flutter之初体验(安装教程)
- VSF表格 粘贴板ClipBoard 将数据粘贴到表格 VB6.0
- c语言均衡器,拿什么拯救你的音色——初识均衡器
- RedHat配置阿里yum源
- 基于html5的旅游网站的设计与实现,基于HTML5的旅游网站的设计与实现(静态网页)(含录像)...
- 计算机实验室安全员责任书,实验室安全目标责任书