java-正则表达式判断移动联通电信手机号
package com.linbilin.phone; import java.util.regex.Matcher;
import java.util.regex.Pattern; public class CheckPhone { /** 电话格式验证 **/
private static final String PHONE_CALL_PATTERN = "^(\\(\\d{3,4}\\)|\\d{3,4}-)?\\d{7,8}(-\\d{1,4})?$"; /**
* 中国电信号码格式验证 手机段: 133,153,180,181,189,177,1700
* **/
private static final String CHINA_TELECOM_PATTERN = "(^1(33|53|77|8[019])\\d{8}$)|(^1700\\d{7}$)"; /**
* 中国联通号码格式验证 手机段:130,131,132,155,156,185,186,145,176,1709
* **/
private static final String CHINA_UNICOM_PATTERN = "(^1(3[0-2]|4[5]|5[56]|7[6]|8[56])\\d{8}$)|(^1709\\d{7}$)"; /**
* 中国移动号码格式验证
* 手机段:134,135,136,137,138,139,150,151,152,157,158,159,182,183,184
* ,187,188,147,178,1705
* **/
private static final String CHINA_MOBILE_PATTERN = "(^1(3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])\\d{8}$)|(^1705\\d{7}$)";
/**
* 验证电话号码的格式
*
* @author LinBilin
* @param str
* 校验电话字符串
* @return 返回true,否则为false
*/
public static boolean isPhoneCallNum(String str) { return str == null || str.trim().equals("") ? false : match(
PHONE_CALL_PATTERN, str);
} /**
* 验证【电信】手机号码的格式
*
* @author LinBilin
* @param str
* 校验手机字符串
* @return 返回true,否则为false
*/
public static boolean isChinaTelecomPhoneNum(String str) { return str == null || str.trim().equals("") ? false : match(
CHINA_TELECOM_PATTERN, str);
} /**
* 验证【联通】手机号码的格式
*
* @author LinBilin
* @param str
* 校验手机字符串
* @return 返回true,否则为false
*/
public static boolean isChinaUnicomPhoneNum(String str) { return str == null || str.trim().equals("") ? false : match(
CHINA_UNICOM_PATTERN, str);
} /**
* 验证【移动】手机号码的格式
*
* @author LinBilin
* @param str
* 校验手机字符串
* @return 返回true,否则为false
*/
public static boolean isChinaMobilePhoneNum(String str) { return str == null || str.trim().equals("") ? false : match(
CHINA_MOBILE_PATTERN, str);
} /**
* 验证手机和电话号码的格式
*
* @author LinBilin
* @param str
* 校验手机字符串
* @return 返回true,否则为false
*/
public static boolean isPhoneNum(String str) {
// 如果字符串为空,直接返回false
if (str == null || str.trim().equals("")) {
return false;
} else {
int comma = str.indexOf(",");// 是否含有逗号
int caesuraSign = str.indexOf("、");// 是否含有顿号
int space = str.trim().indexOf(" ");// 是否含有空格
if (comma == -1 && caesuraSign == -1 && space == -1) {
// 如果号码不含分隔符,直接验证
str=str.trim();
return (isPhoneCallNum(str) || isChinaTelecomPhoneNum(str)
|| isChinaUnicomPhoneNum(str) || isChinaMobilePhoneNum(str)) ? true
: false;
} else {
// 号码含分隔符,先把分隔符统一处理为英文状态下的逗号
if (caesuraSign != -1) {
str=str.replaceAll("、", ",");
}
if (space != -1) {
str=str.replaceAll(" ", ",");
} String[] phoneNumArr = str.split(",");
//遍历验证
for (String temp : phoneNumArr) {
temp=temp.trim();
if (isPhoneCallNum(temp) || isChinaTelecomPhoneNum(temp)
|| isChinaUnicomPhoneNum(temp)
|| isChinaMobilePhoneNum(temp)) {
continue;
} else {
return false;
}
}
return true;
} } } /**
* 执行正则表达式
*
* @param pat
* 表达式
* @param str
* 待验证字符串
* @return 返回true,否则为false
*/
private static boolean match(String pat, String str) {
Pattern pattern = Pattern.compile(pat);
Matcher match = pattern.matcher(str);
return match.find();
} public static void main(String[] args) { System.out.println(isPhoneNum("17750581369"));
System.out.println(isPhoneNum("13306061248"));
System.out.println(isPhoneNum("17750581369,13306061248"));
System.out.println(isPhoneNum("17750581369 13306061248"));
System.out.println(isPhoneNum("17750581369、13306061248"));
System.out.println(isPhoneNum("0596-3370653")); } }
java-正则表达式判断移动联通电信手机号的更多相关文章
- JAVA正则表达式判断元音
/* * 判断字符串”qaq”中间的字符是否是元音 * * aeiou * AEIOU * */ (1)正则表达式 (2) (3)
- Java实现判断单联通(强连通缩点+拓扑排序)Going from u to v or from v to u
Description In order to make their sons brave, Jiajia and Wind take them to a big cave. The cave has ...
- Java中用正则表达式判断日期格式是否正确
1.Java中用正则表达式判断日期格式是否正确 DateType.java: /** * @Title:DateType.java * @Package:com.you.dao * @Descript ...
- Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码正则表达式
Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码校验正则表达式 ============================== ©Copyright 蕃薯耀 2017年11 ...
- java工具类(二)之java正则表达式表单验证
java正则表达式表单验证类工具类(验证邮箱.手机号码.qq号码等) 这篇文章主要介绍了java使用正则表达式进行表单验证工具类,可以验证邮箱.手机号码.qq号码等方法,需要的朋友可以参考下. jav ...
- java 正则表达式语法
java 正则表达式语法 标签: 正则表达式javawindowsvbscriptscripting电话 2012-05-20 10:11 6705人阅读 评论(1) 收藏 举报 分类: javaS ...
- Java 正则表达式[转载]
PS:转载自CSDN博客看上去很美 众所周知,在程序开发中,难免会遇到需要匹配.查找.替换.判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力.因此,学 ...
- java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”
在javascript中有一个方法isDigit()使用来判断一个字符串是否都是数字,在java的字符串处理方法中没有这样的方法,觉得常常需要用到,于是上网搜了一下,整理出了两个用正则表达式匹配的判断 ...
- Java正则表达式的应用
在很多种情况下,我们都必须对字符串进行匹配,以便判断字符串的格式是否符合要求,对字符串中的内容进行提取.比如,我要从一段话aabdfe中,判断这段话是否有包含ab这个词,那么如果用if-else来判断 ...
随机推荐
- Java笔记--枚举&注解
1.自定义枚举类的实现,例: class Season{ //1,提供类的属性,声明为rivate final private final String name; private final Str ...
- Day7 - G - Divisors POJ - 2992
Your task in this problem is to determine the number of divisors of Cnk. Just for fun -- or do you n ...
- 移动端 三段式布局 (flex方式)
分享一种平时用的三段式布局(flex) 主要思路是 上中下 header&footer 给高度 main 占其余部分 html 部分 <div class='wrap'> ...
- delphi base64编码
需要uses IdCoderMIME: function TForm1.Base64E(Path: string): string;var filepath: string; filestream: ...
- Python中eval与exec用法的区别
Python中eval,exec这两个函数有着相似的输入参数类型和执行功能,因此在用法上经常出现混淆,以至经常用错,程序易抛出错误.下面主要通过这两个函数的语法来阐述区别,并用例子来进一步说明. 首先 ...
- iPhone Safari下iframe不显示滚动条无法滚动的解决方法。iframe的坑!
<div class="dataTables_wrapper" style="-webkit-overflow-scrolling:touch;overflow:a ...
- 配置多个数据源datasource
https://www.jianshu.com/p/34730e595a8c @Primary.@Qualifire.@Autowired.@Resource https://blog.csdn.ne ...
- Python基础笔记:input()输入与数据类型转换
input就是个万能输入,不过input输入的元素都是以str形式保存的,如果要他作为一个整数的话,就需要进行数据类型转换. input的使用 name=input('please input you ...
- Java语言学习总结 扩展篇 包装类的概念及其使用
包装类 包装类的概述 Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本 ...
- v2??? 重启失败
v2??? 重启失败, 提示 Authorization not available. Check if polkit service is running or see debug message ...