1、背景介绍
在做开发的时候,经常会有一些应用,需要用户的手机号码注册使用,避免任意输入一个不是手机号码的11位数字注册,会使用正则表达式匹配。但是在网上找了很多匹配表达式,发现漏了一些,经过查找,发现是现在4G的用户,开始了新的手机号段。
2、表格
这里有一个表格,是目前中国的手机号码字段,如下所示:
3、正则
在做java开发的时候,我们需要使用正则表达式匹配数据,代码如下:
/*** 手机号码是否合法* @param phoneNumber 手机号码* @return true 合法*/public static boolean isRightPhone(String phoneNumber){/*** 国内手机号码验证规则:* 移动: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卫通)* 新增的4G手机号段:* 中国电信分到新号段170,177,联通分到了176,移动分到了178号段.*/String regExp = "^((13[0-9])|(14[5,7])|(15[^4,\\D])|(17[0,6-8])|(18[0-9]))\\d{8}$";Pattern p = Pattern.compile(regExp);Matcher m = p.matcher(phoneNumber);return m.matches();}