1.  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-正则表达式判断移动联通电信手机号的更多相关文章

  1. JAVA正则表达式判断元音

    /* * 判断字符串”qaq”中间的字符是否是元音 * * aeiou * AEIOU * */ (1)正则表达式 (2) (3)

  2. 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 ...

  3. Java中用正则表达式判断日期格式是否正确

    1.Java中用正则表达式判断日期格式是否正确 DateType.java: /** * @Title:DateType.java * @Package:com.you.dao * @Descript ...

  4. Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码正则表达式

    Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码校验正则表达式 ============================== ©Copyright 蕃薯耀 2017年11 ...

  5. java工具类(二)之java正则表达式表单验证

    java正则表达式表单验证类工具类(验证邮箱.手机号码.qq号码等) 这篇文章主要介绍了java使用正则表达式进行表单验证工具类,可以验证邮箱.手机号码.qq号码等方法,需要的朋友可以参考下. jav ...

  6. java 正则表达式语法

    java 正则表达式语法 标签: 正则表达式javawindowsvbscriptscripting电话 2012-05-20 10:11 6705人阅读 评论(1) 收藏 举报  分类: javaS ...

  7. Java 正则表达式[转载]

    PS:转载自CSDN博客看上去很美 众所周知,在程序开发中,难免会遇到需要匹配.查找.替换.判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力.因此,学 ...

  8. java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”

    在javascript中有一个方法isDigit()使用来判断一个字符串是否都是数字,在java的字符串处理方法中没有这样的方法,觉得常常需要用到,于是上网搜了一下,整理出了两个用正则表达式匹配的判断 ...

  9. Java正则表达式的应用

    在很多种情况下,我们都必须对字符串进行匹配,以便判断字符串的格式是否符合要求,对字符串中的内容进行提取.比如,我要从一段话aabdfe中,判断这段话是否有包含ab这个词,那么如果用if-else来判断 ...

随机推荐

  1. Day6-T3

    原题目 某个帝国修了一条非常非常长的城墙来抵御外敌,城墙共分N段,每一段用一个整数来描述坚固程度. 过了几年,城墙年久失修,有很多段都己经损坏,于是皇帝决定派你去修理城墙,但是经费有限. 所以你准备先 ...

  2. LeetCode1046 最后一块石头的重量(贪心—Java优先队列简单应用)

    题目: 有一堆石头,每块石头的重量都是正整数. 每一回合,从中选出两块最重的石头,然后将它们一起粉碎.假设石头的重量分别为 x 和 y,且 x <= y.那么粉碎的可能结果如下: 如果 x == ...

  3. WFP之WFP简介

    ·过滤引擎是WFP的核心组成部分,过滤引擎分为两大层:用户态基础过滤引擎和内核态过滤引擎.基础过滤引擎会与内核过滤引擎交互.·内核态过滤引擎是整个过滤引擎的主体,内部分为多个分层,每分层都代表着网络协 ...

  4. Exchange Server 2010邮件策略与遵从性

    本文档附带了一个附档,里面详细的描述了如何在Exchange Server 2010中配置如下内容: 1.邮件分类 2.免责申明 3.配置信息隔离墙 4.邮件审核 5.Exchange 2010与AD ...

  5. Python基础笔记:函数式编程:高阶函数、返回函数、匿名函数

    高阶函数 高阶函数:一个函数可以接收另一个函数作为参数 或 一个函数可以返回一个函数作为返回值,这种函数称之为高阶函数. #函数 add 接收 f 函数作为参数 >>> def ad ...

  6. JavaScript中querySelector()和getElementById()(getXXXByXX)的区别

    在日常开发中,使用JavaScript获取元素的时候,最常用的方法就是document.getElementById(getXXXByXX)方法.但是最近发现有很多地方使用的是querySelecto ...

  7. SpringBoot 上传文件突然报错 Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.1428942566812653608

    异常信息 org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request ...

  8. 108-PHP类成员protected和private成员属性不能被查看数值

    <?php class mao{ //定义猫类 public $age; //定义多个成员属性 protected $weight; private $color; } $mao1=new ma ...

  9. UVA 10564 计数DP

    也是经典的计数DP题,想练练手,故意不写记忆化搜索,改成递推,还是成功了嘞...不过很遗憾一开始WA了,原来是因为判断结束条件写个 n或s为0,应该要一起为0的,搞的我以为自己递推写挫了,又改了一下, ...

  10. [CISCN2019 华北赛区 Day1 Web5]CyberPunk

    0x00 知识点 PHP伪协议直接读取源码 http://xxx.xxx/index.php?file=php://filter/convert.base64-encode/resource=inde ...