目前我国开放的手机号段达到27种。其中,移动16种,联通7种,电信4种。

  目前有27种手机号段

  移动:134、135、136、137、138、139、147、150、151、152、157、158、159、182、187、188

  移动目前共有以上16个手机号段。其中,147、157、188是3G专用号段,其他都是2G号段。移动的3G标准为TD-SCDMA,是我国自主研发的3G技术标准,也是国际上通用的三大3G标准之一。

  目前,147开头的号码主要用于上网本等数据业务,157则用于G3无线固话,188用于3G手机。其余13个2G手机号段则是由移动用户基数大决定的。

  联通:130、131、132、155、156、185、186

  在联通的7种号段中,186开头的是3G专用号段,其余为2G号段。联通的3G标准为WCDMA,是国际上使用最多的3G网络。

  电信:133、153、180、189

  电信原来只经营固定电话和宽带业务,接手联通的CDMA网络的133、153号段后,成为三大移动通信运营企业之一。目前,189采用的是国际上另一种通用的3G标准CDMA2000。

  手机归属地越来越难判断

  一般来说,手机号码都是按照运营商和地区来规划的,前3位是运营商的代码、中间4位是归属地代码、后4位是用户号码。传统上,用户根据前3位和中间4位就可以确定手机运营企业和归属地。

  随着手机的普及,这种确定手机归属地的方法会越来越没效。“首先,打头前3位的代码有27种之多,运营手机通信的企业由两家变成3家,很多人根本记不住这些号段是归哪个运营企业的。再次,原来人们确定手机归属地的根据是中间4位区号,如中间4位是0371,可确定是郑州用户;但由于各个地区手机用户数量不平衡,所以大量存在的是中间4位无规律的号码,按照这种方法是不好判断归属地的。”

判断手机运营商号段:

package com.wang.util;

import java.util.regex.Pattern;

public class Phone {

	/**
	 * 根据输入的手机号码获得相应的运营商信息
	 * @param input
	 * @return
	 */
	public String checkPhoneNumberType(String input) {
		String result = "";
		String yidongRegex = "1(3[4-9]|47|5[0-27-9]|8[278])[0-9]{8}";//移动
		String liantongRegex = "1(3[0-2]|5[56]|8[56])[0-9]{8}";//联通
		String dianxinRegex = "1([35]3|8[09])[0-9]{8}";//电信
		if(Pattern.compile(yidongRegex).matcher(input).matches()) {
			result = "中国移动";
		} else if(Pattern.compile(liantongRegex).matcher(input).matches()) {
			result = "中国联通";
		} else if(Pattern.compile(dianxinRegex).matcher(input).matches()) {
			result = "中国电信";
		} else {
			result = "其它";
		}
		return result;
	}
	
}