java 校验手机号格式

主要用到这两个包:

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

 Pattern类用于创建一个正则表达式,生成一个Pattern对象并且编译一个正则表达式,也可以说创建一个匹配模式,

它的构造方法是私有的,不可以直接创建,    但可以通过Pattern.complie(String regex)简单工厂方法创建一个正则表达式,

轮到Matcher类登场了,Pattern.matcher(CharSequence input)返回一个Matcher对象. 
    
Matcher类的构造方法也是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例
String.matches() 这个方法主要是返回是否匹配指定的字符串,如果匹配则为true,否则为false;

 

运营商号段信息:

中国联通号码: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

第二位:2 :3,4,5,7,8

第三位: 0,1,2,3,4,5,6,7,8,9 

总结:

目前java手机号码正则表达式有:

一: "^1[3|4|5|7|8][0-9]\\d{4,8}$"    一般验证情况下这个就可以了

二: "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$"

 

复制代码
 1 public class Test {
 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("您的手机号格式正确");
14             } else {
15                 System.out.println("您的手机号格式不正确");
16             }
17         }
18     }
复制代码

 

posted @   明知山有小脑斧  阅读(6300)  评论(3编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示