Java正则表达式判断手机号是否合法

来源:互联网 发布:阿里云怎么做端口映射 编辑:程序博客网 时间:2024/05/21 14:47
首先我们要搞清楚现在已经开放了多少个号码段,国家号码段分配如下:
移动: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 stubString 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号段;大家可以根据项目需要进行选用。




0 0
原创粉丝点击