电话号码校验,你确定不会有Bug?

Java大拿 2018-01-18 09:39:34 ⋅ 1161 阅读


IT开发人员经常会对电话号码做验证,但是你真的知道电话号码吗?

        我们的生活已经离不开电话,而要打电话就离不开电话号码。但好多人对天天使用的电话号码既熟悉又陌生,因此,在这里我们也补充一些电话号码的知识。

1. 固定电话号码

        一般来说,在比较大的省市(如北京、上海等)使用8位号码,比较小的省市使用7位号码。以北京的电话号码为例,它是由8位数字组成,表示为ABCD EFGH,其中,ABCDE称为一个千群,既该群可以包含1000个电话号码,同理ABCD 称为一个万群。

千群?万群?不知道啥意思吗?接着我们继续讲

        如果在不同的省市之间打电话,则称为长途电话,一般需要通过长途局进行路由。打长途电话需要在本地号码前加上长途区号。根据城市的大小不同,我国电话区号的长度一般是2位到3位,如下:

区号 省份
10 北京
20 广州
21 上海
755 深圳
535 烟台
375 河南

到这里也许会有读者质疑了。北京的长途区号不是010吗?
答案肯定不是了。如果是的话我也不会写这篇文章了:)
下面我给大家解释下为什么是10而不是010

        由于各地区号的长度不同,而且数字也不规则,很难做处理,因此,为了区分长途电话和本地电话,我国规定,在拨打长途电话前除了加上区号外,还要在最前面加“0”,因此,“0”是国内长途字冠,它本身不是区号的一部分。

        为了帮助读者理解,我们先考虑国际长途的情况。为了区分国内长途和国际长途,我国规定,国际长途要在国家代码前加上两个0。因此,如果拨打美国的号码,如:1-234-567-890,则需要拨打00-1-234-567-890。(这里的横岗只是为了分割,正常拨打不需要加)其中,1位美国的国家代码,我们稍后还会讲。

        中央电话交换机的拨号规则遵循短号有限的原则,拨号时不加0就认为是本地号码,加一个0就认为是国内长途,两个0是国际长途。我国的国家代码是86,因此,一个北京号码的国际表示是:86 10 ABCD EFGH。

        与我国不同,美国的国际长途字冠是011,因此如果从美国拨打中国的号码,则需要拨:86 10 ABCD EFGH。

是不是感觉很复杂?

        其实在实际书写电话号码时,有时会省略国际长途字冠,而同一用“+”号代替,如:+86 10 ABCD EFGH

现在知道为什么是010了吧?另外,我们还知道,使用固定电话拨打异地手机时前边要加拨0,同样说明0并不是区号或者手机号码的一部分。

2. 移动电话号码和专用号段

        移动电话号码俗称手机号,由于其可移动与漫游的特性,因此与普通固定电话号码略有不同。众所周知,我国的移动电话号码都是以1开头的,按不同运营商来划分。如中国移动的号码由135、136、137、138、139等开头;中国联通的由130、185、186等开头,中国电信的由133、189等开头。他们后面都是8位的号码,因此整个手机号共11位,前3位称为移动电信运营商专用的号段

从2013年工信部发放虚拟运营商牌照以后,核发170号段作为虚拟运营商的专用号段。

3. 短号码

相比大家应该已经猜到下面要讲什么了吧? 咱们爸妈从小就叫我们110、119、120分别都干嘛用

        有一类特殊的号码称为短号码,如大家熟知的110、119、120等,这些属于公益性的号码(又称紧急号码,供紧急的情况下使用),拨打都是免费的。

        还有一部分是预付费的电话卡类业务,如200、201、300等。拨打这类号码本身不收费,而从关联的电话卡上扣费。

        另一些短号码,如114等,由于运营商的分拆、合并,有的演变成了116114;还有一些5位的短号码专门供一些大的集团(如银行等)使用,如95555、95588等,这些号码不论何时何地拨打,一般只收市话费。

        这些短号码的资源比较紧张,一般不会给个人使用。另外还有其他一些短号码,我们就不多讲了,常见的就这些了。

4. 800 和 400 号码

400这个应该并不陌生吧,那800什么意思呢?

        800 开头的号码是被叫付费的业务,主叫呼叫这些号码是免费的。这些号码主要由一些大的企业集团使用。这类号码都是虚拟的电话号码,在实际呼叫过程中通过查询数据库转换成真正的目的号码。

        但是800号码有一个致命的缺点,就是用手机打不通,这主要是电信业务的历史原因造成的。随着移动业务的发展,手机用户越来越多,因此,出现了400业务。这类业务的特点是主被叫分摊付费,主叫付本地通话费,被叫付长途电话费。400 业务是手机用户可以呼叫的。

5. 北美电话号码分类计划

        为了与国内号码进行比对,我们来简单说一下北美电话号码分类计划。

        加拿大和美国使用北美电话号码分类计划,其区号由3位数字组成,本地号码为7位数字,1为长途接入码,即长途字冠。比如,一个完整的号码为1(ABC)DEF-GHIJ, 如果是在本地拨打,则可以直接拨“DEF GHIJ”, 如果是拨打长途,则需要先拨字冠1及区号,即:1(ABC)DEF-GHIJ。

        值得一提的是,其中的区号ABC如果是555,除555-1212是查号台外,其他的号码都是不存在的。这类号码一般用于电影或戏剧中,防止与真实环境中的电话号码相冲突。

6. 电话号码的书写格式

        电话号码就是一长串号码,单有时候为了便于阅读,在写的时候常用连字符“-”、括号、空格等将数字分开,如上面我们列举的美国电话号码的格式。

        国内的电话号码的书写一般采用如下的方式:

(010) ABCD EFGH (没有国家代码,虽然0不是区号的一部分,但是,习惯了)
+86 (10) ABCD EFGH (固话,8位,国际号码格式)
+86 (535) ABC DEFG (固话,7位,国际号码格式)
+86 139 ABCD EFGH (手机,国际号码格式)

        当然,具体的写法没有统一的规定,只要让看到号码的人知道怎么拨打就行了。至于要将电话号码印到名片上,又设计企业形象设计的问题了,那就另当别论了。

更多精彩内容请关注“IT实战联盟”公众号哦~~~



全部评论: 0

    我有话说:

    打造电影主题酒店,「戏」获亿元A轮融资;拼多多完成新一轮30亿美元融资,腾讯领投;内衣品牌「内外」获6000万元B+轮融资

    4月11日,「电影酒店」宣布获得1亿元A轮融资;拼多多完成新一轮30亿美元融资,腾讯领投......

    记一次二代身份证校验过程

    原文:https://www.toutiao.com/i6931927852434670088/   如上如所示,中国居民身份证号码编码规则如下: 第1-2位表示省(自治区、直辖市

    理解符号数和无符号数

      原文链接 理解符号数和无符号数 声明网上看到的文章,原文找不到了,原文被转载的不成样子,重复很多,整理花了很长时间,在翻看了维基百科后发现,原文中对于负数原码和补码存在一些问题

    想更好的理解Node.js中的Buffer吗?看一下这个。

    不论是否是科班出身,认真读完,想必会给带去一些收获.

    可能不知道的CRUD

      本系列旨在系统学习提升Mysql技能,更完整内容可以参考阿里新零售数据库设计与实战 DB引擎 可能不知道的CRUD INSERT 情况一 Duplicate key 当批量更新,如果

    8 种最坑的 SQL 错误用法,踩过坑?

    编写复杂SQL语句要养成使用 WITH 语句的习惯。简洁且思路清晰的SQL语句也能减小数据库的负担 。

    Spring Cloud 2020.0.1 BUG 修复版本发布

    2021 首发, Spring Cloud 2020.0.1 (代号"Ilford",伊尔福德)版本发布,此版本 BUG 修复版本,可从 2020.0.0 版本平滑升级。目前已可以从 maven

    GoLand 2020.3.2 发布,bug 修复版本

    GoLand 2020.3.2 已经发布,主要包含各种 bug 修复。 部分更新内容 支持在带有 M1 芯片的 Mac 上正常使用调试器。 如果之前已配置,则需要升级到 2020.3.2 后就

    手把手教用Spring Cloud + Redis 是实现点赞功能,包教包会

    原文:https://www.toutiao.com/i6791466166662464007 经常刷微博或者刷某条的人都会看见在页面的各个地方都点赞的功能,like this:@  

    不要把Redis当垃圾桶了,T也开发设计规范,避坑了吗?!

    Redis不是垃圾桶也不是 SUPER MAN,能力和资源都有限,不合理的使用会降低它的健康度,严重时甚至会

    UCloud 5 元/月云主机,值得拥有

    UCloud 5 元/月云主机,值得拥有

    Istio 1.8.2 发布,修复了部分 bug 以提升稳定性

    平台,它确保微服务在处理故障时以指定的方式相互连...

    程序猿的周末|全网影视任“盘”,1个磁力搜索神器+2个满速下载工具,

    程序猿珍藏版,全网电影一网打尽——周末不孤单...

    「转载」47 张图带 MySQL 进阶!!!

    我们在  138 张图带 MySQL 入门 中主要介绍了基本的 SQL 命令、数据类型和函数,在具备以上知识后,就可以进行 MySQL 的开发工作了,但是如果要成为一个合格的开发人员

    在浏览器输入url到发起http请求,这过程到底发生了什么?

    在浏览器输入url到发起http请求,这过程到底发生了什么?

    微软 Edge 88 beta 适配 M1,弃用 Flash

    如果想在 M1 芯片的 Mac 电脑上使用基于 Chromnium 开发的浏览器,从现在起不必再选择 Google Chrome。 根据 Windows Central 的报道,微软最新推出的

    架构实战篇(二)-Spring Boot整合Swagger,让的API可视化

    还在跟前端对接上花费很多的时间而没有效果吗?还在为写接口文档而烦恼吗?今天就教大家一个接口对接神器...

    Java Web实战篇-代码之美

    代码之美-小小的优化让的代码Bug更少,执行效率更高

    Node上传文件、文件夹(八)

    学习时候的错觉就是bug时候的感觉。没错、老铁。