参考博客: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
 */

 public class MyPhoneTest {

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

/**

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

我在项目中的使用:

main类:

 import java.util.regex.Matcher;
import java.util.regex.Pattern; public class Main { public static void main(String[] args) {
String str = "13195650000";
if (str.matches(Contant.REGEX_MOBILE)) {
System.out.println("是手机号");
} else {
System.out.println("不是手机号");
}
}
}

Contant类:

 public class Contant {

     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}$";

 }

Java处理正则验证手机号-详解的更多相关文章

  1. java简单正则验证手机号

    import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @Title:Tadesfza * @Description ...

  2. jQuery Validate验证框架详解

    转自:http://www.cnblogs.com/linjiqin/p/3431835.html jQuery校验官网地址:http://bassistance.de/jquery-plugins/ ...

  3. 【转】jQuery Validate验证框架详解

    jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 一.导入js库 <script type=& ...

  4. java对象池commons-pool-1.6详解(一)

    自己的项目中用到了 对象池 commons-pool: package com.sankuai.qcs.regulation.protocol.client; import com.dianping. ...

  5. Java I/O : Java中的进制详解

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

  6. jQuery Validate验证框架详解(jquery.validate.min.js)

    原博客 jQuery Validate验证框架详解 jQuery校验官网地址:https://jqueryvalidation.org/ 一.导入js库 <script type="t ...

  7. jQuery Validate验证框架详解(转)

    jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 一.导入js库 <script type=& ...

  8. java.util.ResourceBundle国际化用法详解

    java.util.ResourceBundle国际化用法详解 初识国际化和ResourceBundle 这个类主要用来解决国际化和本地化问题.国际化和本地化可不是两个概念,两者都是一起出现的.可以说 ...

  9. java基础(3)--详解String

    java基础(3)--详解String 其实与八大基本数据类型一样,String也是我们日常中使用非常频繁的对象,但知其然更要知其所以然,现在就去阅读源码深入了解一下String类对象,并解决一些我由 ...

随机推荐

  1. 廖雪峰Java15JDBC编程-3JDBC接口-2JDBC查询

    我们可以使用JDBC查询来执行select语句. 1. Statement try(Connection conn = DriverManager.getConnection(JDBC_URL, JD ...

  2. lvs + keepalived + nginx + tomcat高可用负载反向代理服务器配置(三) Nginx

    1.  安装 sudo apt-get install nginx 2. 配置nginx sudo gedit /etc/nginx/nginx.conf user www-data; worker_ ...

  3. vuex mutation,action理解

    1. 在store中分别注册mutation和action,action中用commit同步调用mutation来执行修改state,但是在组件中则使用dispatch异步调用action 2. 通俗 ...

  4. .Net StackFrame

    StackFrame指的是一个.net运行的时候堆栈上的一个帧(Frame),每次进入一个方法的时候就会有一个新的方法帧压入线程执行堆栈,可以通过StackFrame获取相关的信息,比如当前代码所在文 ...

  5. Git从fork分支开始的过程整理

    文章适用于团队合作的时候多个人向一个repo贡献,整理了Git从fork分支开始的过程. 1. Fork 在github上你要贡献的repo(eg.http://github/remote/test. ...

  6. 使用dubbo中间件出现NoSuchBeanDefinitionException异常

    dubbo中间件中有一个import com.alibaba.dubbo.config.annotation.Service类,在service层添加注解时要注意,我们添加的是import org.s ...

  7. 编程之法:面试和算法心得(旋转字符串java实现)

    内容全部来自编程之法:面试和算法心得一书,实现是自己写的使用的是java 题目描述 给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串“abcdef”前面的2个字符'a'和'b ...

  8. VC:不支持尝试执行的操作

    问题描述: 基于CDialogEx的对话框工程.VS2010开发环境. 调试运行到OnInitDialog()的CDialogEx::OnInitDialog()方法的时候弹出提示窗口"不支 ...

  9. 怎么对C++枚举(不是类)里面的东西进行随机

    把枚举里面的东西取到一个数组如: enum 枚举类型 a[]={ 枚举元素 }; 变成了一个数组,然后把随机结果当成枚举数组的索引,就可以得到随机的枚举元素了.

  10. Django惰性加载和LazyObject

    看登录中间件的时候发现request.user返回的是SimpleOject对象,往下看翻到了LazyObject,看源码看了半天没看懂 网上搜了一堆资料了解下惰性加载实现是的什么功能,再回去看源码, ...