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

首先我们要搞清楚现在已经开放了多少个号码段,国家号码段分配如下:
移动: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值