java-正则表达式判断移动联通电信手机号

news/2025/1/11 8:49:10/
  1.   1 package com.linbilin.phone;  
      2   
      3 import java.util.regex.Matcher;  
      4 import java.util.regex.Pattern;  
      5   
      6 public class CheckPhone {  
      7   
      8     /** 电话格式验证 **/  
      9     private static final String PHONE_CALL_PATTERN = "^(\\(\\d{3,4}\\)|\\d{3,4}-)?\\d{7,8}(-\\d{1,4})?$";  
     10   
     11     /** 
     12      * 中国电信号码格式验证 手机段: 133,153,180,181,189,177,1700 
     13      * **/  
     14     private static final String CHINA_TELECOM_PATTERN = "(^1(33|53|77|8[019])\\d{8}$)|(^1700\\d{7}$)";  
     15   
     16     /** 
     17      * 中国联通号码格式验证 手机段:130,131,132,155,156,185,186,145,176,1709 
     18      * **/  
     19     private static final String CHINA_UNICOM_PATTERN = "(^1(3[0-2]|4[5]|5[56]|7[6]|8[56])\\d{8}$)|(^1709\\d{7}$)";  
     20   
     21     /** 
     22      * 中国移动号码格式验证 
     23      * 手机段:134,135,136,137,138,139,150,151,152,157,158,159,182,183,184 
     24      * ,187,188,147,178,1705 
     25      * **/  
     26     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}$)";  
     27     /** 
     28      * 验证电话号码的格式 
     29      *  
     30      * @author LinBilin 
     31      * @param str 
     32      *            校验电话字符串 
     33      * @return 返回true,否则为false 
     34      */  
     35     public static boolean isPhoneCallNum(String str) {  
     36   
     37         return str == null || str.trim().equals("") ? false : match(  
     38                 PHONE_CALL_PATTERN, str);  
     39     }  
     40   
     41     /** 
     42      * 验证【电信】手机号码的格式 
     43      *  
     44      * @author LinBilin 
     45      * @param str 
     46      *            校验手机字符串 
     47      * @return 返回true,否则为false 
     48      */  
     49     public static boolean isChinaTelecomPhoneNum(String str) {  
     50   
     51         return str == null || str.trim().equals("") ? false : match(  
     52                 CHINA_TELECOM_PATTERN, str);  
     53     }  
     54   
     55     /** 
     56      * 验证【联通】手机号码的格式 
     57      *  
     58      * @author LinBilin 
     59      * @param str 
     60      *            校验手机字符串 
     61      * @return 返回true,否则为false 
     62      */  
     63     public static boolean isChinaUnicomPhoneNum(String str) {  
     64   
     65         return str == null || str.trim().equals("") ? false : match(  
     66                 CHINA_UNICOM_PATTERN, str);  
     67     }  
     68   
     69     /** 
     70      * 验证【移动】手机号码的格式 
     71      *  
     72      * @author LinBilin 
     73      * @param str 
     74      *            校验手机字符串 
     75      * @return 返回true,否则为false 
     76      */  
     77     public static boolean isChinaMobilePhoneNum(String str) {  
     78   
     79         return str == null || str.trim().equals("") ? false : match(  
     80                 CHINA_MOBILE_PATTERN, str);  
     81     }  
     82       
     83   
     84     /** 
     85      * 验证手机和电话号码的格式 
     86      *  
     87      * @author LinBilin 
     88      * @param str 
     89      *            校验手机字符串 
     90      * @return 返回true,否则为false 
     91      */  
     92     public static boolean isPhoneNum(String str) {  
     93         // 如果字符串为空,直接返回false  
     94         if (str == null || str.trim().equals("")) {  
     95             return false;  
     96         } else {  
     97             int comma = str.indexOf(",");// 是否含有逗号  
     98             int caesuraSign = str.indexOf("、");// 是否含有顿号  
     99             int space = str.trim().indexOf(" ");// 是否含有空格  
    100             if (comma == -1 && caesuraSign == -1 && space == -1) {  
    101                 // 如果号码不含分隔符,直接验证  
    102                 str=str.trim();  
    103                 return (isPhoneCallNum(str) || isChinaTelecomPhoneNum(str)  
    104                         || isChinaUnicomPhoneNum(str) || isChinaMobilePhoneNum(str)) ? true  
    105                         : false;  
    106             } else {  
    107                 // 号码含分隔符,先把分隔符统一处理为英文状态下的逗号  
    108                 if (caesuraSign != -1) {  
    109                     str=str.replaceAll("、", ",");  
    110                 }  
    111                 if (space != -1) {  
    112                     str=str.replaceAll(" ", ",");  
    113                 }  
    114   
    115                 String[] phoneNumArr = str.split(",");  
    116                 //遍历验证  
    117                 for (String temp : phoneNumArr) {  
    118                     temp=temp.trim();  
    119                     if (isPhoneCallNum(temp) || isChinaTelecomPhoneNum(temp)  
    120                             || isChinaUnicomPhoneNum(temp)  
    121                             || isChinaMobilePhoneNum(temp)) {  
    122                         continue;  
    123                     } else {  
    124                         return false;  
    125                     }  
    126                 }  
    127                 return true;  
    128             }  
    129   
    130         }  
    131   
    132     }  
    133       
    134     /** 
    135      * 执行正则表达式 
    136      *  
    137      * @param pat 
    138      *            表达式 
    139      * @param str 
    140      *            待验证字符串 
    141      * @return 返回true,否则为false 
    142      */  
    143     private static boolean match(String pat, String str) {  
    144         Pattern pattern = Pattern.compile(pat);  
    145         Matcher match = pattern.matcher(str);  
    146         return match.find();  
    147     }  
    148       
    149     public static void main(String[] args) {  
    150           
    151         System.out.println(isPhoneNum("17750581369"));  
    152         System.out.println(isPhoneNum("13306061248"));  
    153         System.out.println(isPhoneNum("17750581369,13306061248"));  
    154         System.out.println(isPhoneNum("17750581369 13306061248"));  
    155         System.out.println(isPhoneNum("17750581369、13306061248"));  
    156         System.out.println(isPhoneNum("0596-3370653"));  
    157   
    158     }  
    159   
    160 }  

     

转载于:https://www.cnblogs.com/itcqx/p/5728688.html


http://www.ppmy.cn/news/768219.html

相关文章

java简介(Java简介英文)

什么是java Java是由Sun微系统公司所发展出来的程序语言,它本身是一种对象导向(Object-Oriented)的程序语言。JAVA目前在手机上应用最多的就是JAVA游戏。 Java也号称是能跨平台使用的语言,这主要是因为Java本身被编译之后,并不是直接产生可执…

最佳实践 | 联通数科基于 DolphinScheduler 的二次开发

点击上方 蓝字关注我们 ✎ 编 者 按 数据时代下,井喷的数据量为电信行业带来新的挑战。面对每日数百 TB 的新增数据,稳定可靠的调度系统必不可少。 中国联通旗下的联通数字科技有限公司(以下简称“联通数科”),其数据…

Unicode编码完全探究(三)之联通乱码

一、文章来由 这个乱码问题很早以前就发现了,其实就是编码的问题导致~~~ 二、现象 新建一个文本文档,输入“联通”二字(不带引号),然后保存、关闭,再重新打开。你发现了什么?没错,“联通”二字已经变成了…

【每日面试】2021北京联通Java一面

作者:牛客825106274号 链接:https://www.nowcoder.com/discuss/784026?source_iddiscuss_experience_nctrack&channel-1 来源:牛客网 1. 说一下你项目失败的经历?(我随便说了一个大学时候的,面试官&am…

联通物联网卡ICCID校验位的计算方法探究

SIM卡的ICCID校验位的计算方法,应该不是什么隐私或者机密吧,最近关于这个有点小发现,故写出来与大家分享一下。 ICCID简介 ICCID (Integerate Circuit Card Identity),集成电路卡识别码,是SIM卡的唯一识别号码。ICCI…

联通笔试真题(有答案)

http://blog.sina.com.cn/s/blog_6ea6cd6a0100mhy5.html 联通 电信 笔试 真题 (2010-11-23 12:25:49) 转载▼ 标签: 杂谈 分类: 感情 http://cu.dajie.com/ 联通校园招聘讨论区: http://company.dajie.com/ 大街网求职招聘:…

中国移动CMPP协议、联通SGIP协议、电信SMGP协议短信网关

移动cmpp协议 英文缩写:CMPP (China Mobile Peer to Peer) 中文名称:中国移动通信互联网短信网关接口协议 说明:为中国移动通信集团公司企业规范。规范中描述了中国移动短信业务中各网元(包括ISMG、 GNS和SP)之间的…

联通笔试题

http://www.chinahrlab.com/company/chinaunicom/12398.html 联通笔试题 一般能力倾向测验 题量:100 道 时间:120 分钟 1 第一部分 数学运用能力 一、数字推理 (1-5题)下列数列中都缺少一项,请你选出你认为最符合…