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

  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 }  
时间: 2024-10-12 21:43:03

java-正则表达式判断移动联通电信手机号的相关文章

java正则表达式判断数字

"^\\d+$" //非负整数(正整数   +   0)       "^[0-9]*[1-9][0-9]*$" //正整数       "^((-\\d+)|(0+))$" //非正整数(负整数   +   0)       "^-[0-9]*[1-9][0-9]*$" //负整数       "^-?\\d+$" //整数       "^\\d+(\\.\\d+)?$" //非负浮

Java正则表达式判断一个字符串是否是ipv4地址

public class StringTest { public static void main(String[] args) { String regex = "\\A(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\z"; String str1 = "1.1.1.0"; boolean flag1 = str1.matches(regex); System.

Java编程:正则表达式判断邮箱及电话号码是否有效

/** * 正则判断邮箱及电话号码是否有效 * @param args */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入你的邮箱:");  String email = sc.next();   System.out.println("请输入你的电话号码:");      String phone = sc.

Java快速判断是不是手机号

假如现在有一个字符串,如何快速准确的判断其是否为手机号? public boolean isMobileNO(String mobiles) { Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0-9]))\\d{8}$"); Matcher m = p.matcher(mobiles); return m.matches(); } 相当简单-------------------------- Java快速判断是不是手

正则表达式判断手机号

//正则表达式判断手机号格式 - (BOOL)checkTel:(NSString *)str { if ([str length] == 0) { UIAlertView* alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"data_null_prompt", nil) message:NSLocalizedString(@"tel_no_null", nil) delegate:nil

业余草 Java正则表达式,验证手机号和电话号码

Java 正则表达式 正则表达式定义了字符串的模式. 正则表达式可以用来搜索.编辑或处理文本. 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别. 正则表达式实例 一个字符串其实就是一个简单的正则表达式,例如 Hello World 正则表达式匹配 "Hello World" 字符串. .(点号)也是一个正则表达式,它匹配任何一个字符如:"a" 或 "1". 下表列出了一些正则表达式的实例及描述: 正则表达式 描述 this is t

java 正则表达式语法

java 正则表达式语法 标签: 正则表达式javawindowsvbscriptscripting电话 2012-05-20 10:11 6705人阅读 评论(1) 收藏 举报  分类: javaSe(16)  目录(?)[+] 本文目标 如何使用本教程 正则表达式到底是什么? 入门 测试正则表达式 元字符 字符转义 重复 字符类 反义 替换 分组 后向引用 零宽断言 负向零宽断言 注释 贪婪与懒惰 处理选项 平衡组/递归匹配 还有些什么东西没提到 联系作者 最后,来点广告… 一些我认为你可能

JavaSE学习笔记21:Java正则表达式

Java正则表达式   1.正则表达式(特点) 正则表达式,顾名思义,就是符合一定规则的表达式.作用是专门用于操作字符串,虽说String类中已经有了很多操作字符串的方法,但是它们的功能单一,操作起来还麻烦,正则弥补了它们的补足. 下面我们通过一个小例子来感受一下区别: 需求:对QQ号码进行校验,要求:5~15位,0不能开头,只能是数字. (1)常规的做法: class CheckQQ { public static void main(String[] args) { String qq="3

Java正则表达式教程及示例

本文由 ImportNew - ImportNew读者 翻译自 journaldev.欢迎加入翻译小组.转载请见文末要求. [感谢 @CuGBabyBeaR  的热心翻译.如果其他朋友也有不错的原创或译文,可以尝试投递到 ImportNew.] 当我开始我的Java职业生涯的时候,对于我来说正则表达式简直是个是梦魇.本教程旨在帮助你驾驭Java正则表达式,同时也帮助我复习正则表达式. 什么是正则表达式? 正则表达式定义了字符串的模式.正则表达式可以用来搜索.编辑或处理文本.正则表达式并不仅限于某