为什么手机号码都11位?如何正则校验手机号码?区分运营商 您所在的位置:网站首页 11位手机号正则 为什么手机号码都11位?如何正则校验手机号码?区分运营商

为什么手机号码都11位?如何正则校验手机号码?区分运营商

#为什么手机号码都11位?如何正则校验手机号码?区分运营商| 来源: 网络整理| 查看: 265

目前,我国使用的手机号码为11位,其中各段有不同的编码方向: 前3位———网络识别号;第4-7位———地区编码;(所以把你的号码前7位放到度娘搜索就知道哪个城市)第8-11位———用户号码。经过划分,目前以“13”打头的号码段已全部发放完毕,联通占3个子号段,由130至132号段,133号段为电信手机号段;而中国移动则占有其余6个子号段,即由134至139号段。按照电信号码使用的原则,一般达到理论容量的50%,即意味着号码资源利用率接近饱和了。按照中国移动现有6个号段分析,移动的用户号码容量实际上限应该在3亿左右;而联通的上限在2亿上下。而电信的上限在1亿上下。(数据只算13开头的)

电信 (中国电信+中国卫通)·

中国电信手机号码开头数字 2G/3G号段(CDMA2000网络)133、153、180、181、189 4G号段 177

联通 (中国联通+中国网通)

中国联通手机号码开头数字 2G号段(GSM网络)130、131、132、155、156 3G上网卡145 3G号段(WCDMA网络)185、186 4G号段 176、185[1]

移动 (中国移动+中国铁通)

中国移动手机号码开头数字 2G号段(GSM网络)有134x(0-8)、135、136、137、138、139、150、151、152、158、159、182、183、184。 3G号段(TD-SCDMA网络)有157、187、188 3G上网卡 147 4G号段 178

国内的手机号码,是由国家信息产业部统一规划的。原来是10位,由于用户的不断增长,10位的号码不够使用,于是升为11位。至于为什么是11位,一方面是由号码格式决定的,另一方面,就是上面说的号码段容量问题。现在的手机号码格式是 3位网号+4位HLR号+4位的个人代码,这样的配置既能够最大程度的利用号码资源,不至于浪费,又能够在各运营商各地区之间进行灵活分配。中国的手机号码目前是11位,是世界上最长的电话号码,为什么是11位呢,原因很简单因为一个11位数的组合数一共有千亿个号码。而且即便除去头两位的“13”剩下9位数,而一个9位数的组合数也就是从13000000000——13999999999一共可以容纳10亿个不同的号码,中国才多少人?10来亿人,电话普及率还没达到100%吧,所以完全够用。即便到未来普及率到100%或者一人两个电话的时候,我们把首位的“1”固定下来,第二位换一个数字就又增加10亿个号码的容量。既然对于我们这个人口巨型的大国来说这点电话号码就够用了,世界上哪个国家有我们的人口多?呵呵,所以他们都没有这么长的电话号码

中国大陆地区13*####$$$$这就是格式.*号是区分不同业务服务商的像移动和联通.提供前7位也就是13*####就可以在查出手机归属地!$$$$是用户流水号怎么看出手机号是什么地方的手机号码前七位是号段,后四位随机分配,所以主要关注手机号码的前七位就可以了。而这前七位数字里,前面的三位数字是网段,比如130、133、139等,这跟手机号码所在地没有关系,因此如何判断手机号码归属地,主要就看第4位到第7位这中间的四位数字。如何从这四位判断手机归属地呢?在移动电话开始投入使用初期,手机号码是10位数,举个典型的例子就是1394518888这个号码,中间的“451”其实就是各地的长途区号,即哈尔滨市。后来在1999年11月进行电话号码升位,统一在第三位数字后添加一个数字“0”,就变成了现在的13904518888。而判断手机号码归属地,就变成了根据电话区号判断是哪个城市了,如果你对全国的长途电话区号比较熟,就有利于你判断手机号码的归属地了,比如0351-0370属于山西地区、0451-0470属于黑龙江地区、0550-0569属于安徽地区等等。这样的话,手机号中间四位如果是0打头的就比较好判断。

不过现在随着手机用户的越来越多,一些没有规则的号段也逐渐放出,比如1358192xxxx属于北京地区等等,这就需要你到网上查询详细的号段分配了。疑问一:“废弃”的号码哪里去了?目前我国从134到139的号段为中国移动所得,联通用户的号码则以130到133开头。为了缓解号码资源紧张状况,运营商对于久不使用的“休眠号”,以及销户号码采取“重启”方式处理。疑问二:号段为什么不断增加?这主要是由于用户数量的增加引起的,每一个号段都会有一定的容量,比如139开头的11位数号段,其容量是1亿用户。按照电信号码使用的原则,一般达到理论容量的50%即意味着号码资源利用率接近饱和了。疑问三:号段的选择有什么讲究?

各个不同的频段应用于各个不同的通信领域,大家熟悉的13开头的频段主要应用于移动通信;而我们所不了解的号段,有的应用于点对点通信(比如警察对讲机)或者特殊的通信领域

从以上我们可以看到第一位是【1】开头,第二位则则有【3,4,5,7,8】,第三位则是【0-9】,第三位之后则是数字【0-9】。从而我们可以得出一个符合当前的手机号码验证正则表达式。

var reg = /^1(3|4|5|7|8][0-9){9}$/; //验证规则 或者 var reg= ^1[34578]\d{9}$  推荐后者 var phoneNum = '15507621999';//手机号码 var flag = reg.test(phoneNum); //true

但你想过没有,也许这个第二位代码可能随时增加一个,比如以16开头呢?19开头呢?谁知道以后的事,咱们的代码要保证几年没问题,所以还可以不验证第二位规则:·

reg = /^1[0-9]{10}$/;

但是 ,很多朋友会写成:

/^1[3|4|5|7|8][0-9]{9}$/ /^1[3|4|5|7|8][0-9]{9}$/.test('1|222222222') //true

这里温习下圆括号的用法:

1.正则表达式中的圆括号的作用是对字符进行分组,并保存匹配的文本。

2.圆括号用法I:对字符或元字符进行分组,这样在圆括号内就可以对字符组合使用限定符。

    eg. 匹配A+一个数字+A+一个数字:(A\d){2}

3.圆括号用法II:表示可选择性。

    3.1 从两个直接量中选择一个

       eg. gr(a|e)y匹配gray和grey,该例子还可以使用gr[ae]y,字符类效率更高。

    3.2 从多个直接量中选择

       eg. (Doctor|Dr\.?)匹配Doctor,Dr,Dr.三种情况

    3.3 错误匹配的交替行为,

       使用交替行为时,有时会出现意想不到的错误。

       eg. 用(a|ab)匹配ab时,只能匹配a,但是如果用(ab|a),则可以匹配ab

4.捕获圆括号:正则表达式中,与位于圆括号之间的模式匹配的内容都会被捕获。

    4.1 当模式中有嵌套的圆括号时,变量的编号会按照圆开括号出现的位置一次进行。

    eg. ([A-Za-z](\d{2}))((-)\d{2})匹配”A22-33”时,匹配情况如下:

Group 1:   A22

Group 2:   22

Group 3:   -33

Group 4:   -

    4.2 .NET中,可以创建命名的组,语法为:

       (?

       eg. (?

        Group "FirstLetter": A22

Group "Num":  22

Group 1:   -33

Group 2:   -

    4.3 非捕获的圆括号:.NET和JavaScript都提供了非捕获圆括号的功能,即圆括号的内容不作为捕获对象,当圆括号中的内容不是想捕获的对象时,采用非捕获圆括号可以提高匹配效率。语法为:

       (?:the-non-captured-content)

       eg. (\w(?:\d{2}))((?:-)\d{2})匹配” A22-33”情况如下:

        Group 1:   A22

Group 2:   -33

注:\d{2}匹配的”22”没有被捕获

5.反向引用(backreferences)

    语法:.NET和JavaScript中,表示匹配第一组的变量被指定为”\1”

    能够体现反向引用的便利性的一种情况是找到句子中重复的单词。

    eg. 查找下列句子中重复的单词:

I think that that is often overdone.

This sentence contains contains a doubled word or two two.

我们用([A-Za-z]+) +\1\b来匹配,红色部分为匹配的结果

       在这个匹配模式中([A-Za-z]+)为匹配的第一组变量,后面加一个或多个空格( +)表示单词间隔,

       然后用”\1”来表示第一组匹配的变量(即[A-Za-z]+匹配的内容),最后一个表示单词的结束(\b)

附带正则表达式:

提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F)  *=  *('|")?(\w|\\|\/|\.)+('|"|  *|>)?   

提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*   

提取信息中的图片链接:(s|S)(r|R)(c|C)  *=  *('|")?(\w|\\|\/|\.)+('|"|  *|>)? 

提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)     

提取信息中的中国手机号码:(86)*0*13\d{9}     

提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}     

提取信息中的中国电话号码(包括移动和固定电话):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}     

提取信息中的中国邮政编码:[1-9]{1}(\d+){5}     

提取信息中的中国身份证号码:\d{18}|\d{15}     

提取信息中的整数:\d+     

提取信息中的浮点数(即小数):(-?\d*)\.?\d+     

提取信息中的任何数字  :(-?\d*)(\.\d+)?   

提取信息中的中文字符串:[\u4e00-\u9fa5]*     

提取信息中的双字节字符串  (汉字):[^\x00-\xff]*

参考文章:

https://www.zhihu.com/question/19765957/answer/40597226

http://caibaojian.com/phone-regexp.html

正则表达式学习笔记(5)正则表达式中的圆括号



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有