参考博客:https://www.cnblogs.com/wangzn/p/7212587.html

https://www.cnblogs.com/go4mi/p/6426215.html

package phone;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 运营商号段如下:
 * 中国联通号码:130、131、132、145(无线上网卡)、155、156、185(iPhone5上市后开放)、186、176(4G号段)、
 *               175(2015年9月10日正式启用,暂只对北京、上海和广东投放办理)
 * 中国移动号码:134、135、136、137、138、139、147(无线上网卡)、150、151、152、157、158、159、182、183、187、188、178
 * 中国电信号码:133、153、180、181、189、177、173、149 虚拟运营商:170、1718、1719 
 * 手机号前3位的数字包括:
 * 1 :1
 * 2 :3,4,5,7,8
 * 3 :0,1,2,3,4,5,6,7,8,9 
 * 总结: 目前java手机号码正则表达式有:
 * a :"^1[3|4|5|7|8][0-9]\\d{4,8}$"    一般验证情况下这个就可以了
 * b :"^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$"
 * Pattern和Matcher详解(字符串匹配和字节码)http://blog.csdn.net/u010700335/article/details/44616451
 */

 1 public class MyPhoneTest {
 2
 3     public static void main(String[] args) {
 4         String phone = "13123456789";
 5         String regex = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$";
 6         if(phone.length() != 11){
 7             System.out.println("手机号应为11位数");
 8         }else{
 9             Pattern p = Pattern.compile(regex);
10             Matcher m = p.matcher(phone);
11             boolean isMatch = m.matches();
12             if(isMatch){
13                 System.out.println("您的手机号" + phone + "是正确格式@——@");
14             } else {
15                 System.out.println("您的手机号" + phone + "是错误格式!!!");
16             }
17         }
18     }

/**

     * 详解:这是正则表达式Pattern.compile("***");这个是规范
    Pattern类用于创建一个正则表达式,生成一个Pattern对象并且编译一个正则表达式,也可以说创建一个匹配模式,
    它的构造方法是私有的,不可以直接创建,    但可以通过Pattern.complie(String regex)简单工厂方法创建一个正则表达式,
    轮到Matcher类登场了,Pattern.matcher(CharSequence input)返回一个Matcher对象. 
    
    Matcher类的构造方法也是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例
    String.matches() 这个方法主要是返回是否匹配指定的字符串,如果匹配则为true,否则为false;
}

我在项目中的使用:

main类:

 1 import java.util.regex.Matcher;
 2 import java.util.regex.Pattern;
 3
 4 public class Main {
 5
 6     public static void main(String[] args) {
 7         String str = "13195650000";
 8         if (str.matches(Contant.REGEX_MOBILE)) {
 9             System.out.println("是手机号");
10         } else {
11             System.out.println("不是手机号");
12         }
13     }
14 }

Contant类:

1 public class Contant {
2
3     public static final String REGEX_MOBILE = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$";
4
5 }

转载于:https://www.cnblogs.com/haoyul/p/9701085.html

Java处理正则验证手机号-详解相关推荐

  1. java spring 登录验证_详解使用Spring3 实现用户登录以及权限认证

    使用Spring3 实现用户登录以及权限认证 这里我就简单介绍一下,我在实现的时候处理的一些主要的实现. 1.用户登录 用户名 密 码 © 2013 - 2014 | 以上是前台页面,后台的就是一个简 ...

  2. jQuery Validate表单验证框架详解

    jQuery表单验证框架总结 jQuery Validate验证框架详解 jQuery校验官网地址:bassistance.de » jQuery plugin: Validation 一.导入js库 ...

  3. java中的进制输出转换_Java I/O : Java中的进制详解

    作者:李强强 上一篇,泥瓦匠基础地讲了下Java I/O : Bit Operation 位运算.这一讲,泥瓦匠带你走进Java中的进制详解. 一.引子 在Java世界里,99%的工作都是处理这高层. ...

  4. jQuery Validate验证框架详解

    2019独角兽企业重金招聘Python工程师标准>>> 一.导入js库 <script type="text/javascript" src="& ...

  5. Java多线程之线程池详解

    Java多线程之线程池详解 目录: 线程池使用及优势 线程池3个常用方式 线程池7大参数深入介绍 线程池底层工作原理 1. 线程池使用及优势 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务 ...

  6. Java多线程之volatile详解

    Java多线程之volatile详解 目录: 什么是volatile? JMM内存模型之可见性 volatile三大特性之一:保证可见性 volatile三大特性之二:不保证原子性 volatile三 ...

  7. [java] 虚拟机(JVM)底层结构详解[转]

    [java] 虚拟机(JVM)底层结构详解[转] 本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 在以前的博客里面,我们介绍了在java领 ...

  8. (best!)JAVA中文字符编码问题详解

    转载自:http://blog.csdn.net/youyue/article/details/4580402 JAVA中文字符编码问题详解 JAVA的中文字符乱码问题一直很让人头疼.特别是在WEB应 ...

  9. layui单选框verify_layui lay-verify form表单自定义验证规则详解

    虽然layui的官方文档已经是写的比较详细,但是初次使用的时候总会懵一下,这里纪录一下lay-verify自定义验证规则的时候到底放哪. html: 提交 js: form.verify({ //数组 ...

最新文章

  1. Linux2.6内核--对块IO层操作的讨论
  2. (整理类)文件描述符,文件描述符标志,文件状态标志
  3. 学python要多少钱-Python培训一般要多少钱?
  4. .NET 将数据输出到WORD、EXCEL、TXT、HTM
  5. java.util.concurrent.Future基础
  6. Python的构造函数和析构函数,对象和类的不一样
  7. actionscript 3.0 怎么写android 程序,(ActionScript3.0笔记)第一个程序HelloWorld!
  8. Shell awk 求标准差
  9. 巧得int(4字节)最大最小值
  10. win10添加开机启动项_Win10+Deepin双系统开启启动项调整
  11. 在任意文件夹下以管理员的身份运行powershell
  12. html中显示特殊符号(附带特殊字符对应表)
  13. 跳出“画地为牢”的陷阱:更加明智地规划职业发展
  14. 分布式ssh_使用SSH的分布式管理
  15. select句柄数限制 及总结
  16. APP-iOS和Android的尺寸规范
  17. 金山办公2020校招C++开发工程师笔试题(一)
  18. 【可视化】rviz下的kitti数据集可视化(1)
  19. ui设计需要美术功底吗,没有美术功底如何快速提高
  20. 从零开始:Python学习成长路线

热门文章

  1. Delphi 2007体验!
  2. OpenCV2学习笔记(一)
  3. .net 使用 Aspose.Words 进行 Word替换操作
  4. 应用量化时代 | 微服务架构的服务治理之路
  5. Android性能优化
  6. 【Storm篇】--Storm基础概念
  7. Java并发工具类(闭锁CountDownLatch)
  8. 用Core Temp查看服务器CPU温度
  9. [原创]java使用JDBC向MySQL数据库批次插入10W条数据测试效率
  10. hibernate----N-1(一)