正则表达式判断手机号是否合法
发布时间:2020-12-14 01:01:31 所属栏目:百科 来源:网络整理
导读:首先我们要搞清楚现在已经开放了多少个号码段,国家号码段分配如下: 移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188 联通:130、131、132、152、155、156、185、186 电信:133、153、180、189、(1349卫通) 剩下的就是写正则
首先我们要搞清楚现在已经开放了多少个号码段,国家号码段分配如下: 移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188 联通:130、131、132、152、155、156、185、186 电信:133、153、180、189、(1349卫通) 剩下的就是写正则表达式进行匹配了,如下:
package com.example.offline; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * * @author FX_SKY * */ public class PhoneTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String telNum = "10086"; boolean flag = isMobiPhoneNum(telNum); System.out.println("telNum "+telNum +" isMobiPhoneNum "+flag); telNum = "13611503575"; flag = isMobiPhoneNum(telNum); System.out.println("telNum "+telNum +" isMobiPhoneNum "+flag); } /** * 通用判断 * @param telNum * @return */ public static boolean isMobiPhoneNum(String telNum){ String regex = "^((13[0-9])|(15[0-9])|(18[0-9]))d{8}$"; Pattern p = Pattern.compile(regex,Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(telNum); return m.matches(); } /** * 更严格的判断 * @param mobiles * @return */ public static boolean isMobileNum(String telNum){ Pattern p = Pattern.compile("^((13[0-9])|(15[^4,D])|(18[0,5-9]))d{8}$"); Matcher m = p.matcher(telNum); return m.matches(); } } 这里提供了两种判断方法,第一种方法更宽泛一些,第二种方法较第一种方法更严格一些,去除了154号段;大家可以根据项目需要进行选用。 方法二:
^1[3|4|5|8][0-9]d{8}$ 这里的1是代表,手机号码要以1开头,因为中国目前还没有以其他数字开头的手机号,[3|4|5|8]是表示在1的后面可能是3,4,5或者8,比如:13/14/15/18等,[0-9]表示第三位数字可以是0到9的任意整数。d{8}的意思是0到9的整数长度为8! http://m.blog.csdn.net/blog/FX_SKY/20617877 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |