FindNumberLocation
号码格式验证

手机号码格式验证与+86国际格式转换

粘贴一个号码或一整列号码,立即判断电话号码格式是否有效,并给出国内格式、+86国际格式和E.164格式。号码在浏览器中处理。

中国大陆号码直接输入:手机号码11位,座机号码要带区号。境外号码请以+和国际区号开头。空格和短横线可以保留。

结果显示号码类型、国家/地区,以及E.164、国际格式、国内格式和tel:链接四种写法,每种都能直接复制,包括中国手机号国际格式(+86写法)。这里只验证格式,不能判断号码是否在用。

11位手机号码

正确的手机号码格式:11位,以1开头

中国大陆的手机号码都是11位,第一位是1。前三位是号段,比如13X、15X、18X、19X;前7位决定号码的归属地。验证时,工具先看位数,再看开头几位是否属于已分配的号段,光数位数是不够的。

输入示例与检查结果
输入的号码结果原因
131 2345 6789有效(手机)11位,131属于已分配的手机号段
+86 131-2345-6789有效(手机)+86、空格和短横线都能识别,结果和上一行相同
0086 131 2345 6789有效(手机)开头的00按+处理,等同于+86
131 2345 678位数不足只有10位。中国大陆没有10位的手机号码,多半是漏打了一位
154 1234 5678未分配位数正确,但154号段没有分配
086 131 2345 6789无效国际区号是86,不是086;多出来的0让号码位数太多
+999 123 4567无效没有国家/地区使用+999

“未分配”“无效”“位数不足”都说明号码不符合编号规则,多半是漏打、多打或打错了数字。检查单个号码时,位数不够会提示继续输入。号段数据来自libphonenumber,刚启用的新号段在数据更新前可能被判为未分配。“有效”只说明号码符合编号规则,不说明号码在用。手机号码还可以查号段属于哪家运营商,查到的是号段最初分配的运营商,号码可能已携号转网。

+86怎么填

手机号码+86格式怎么填:+86、0086与86的区别

86是中国的国际区号,+代表国际冠码,所以+86和0086指向同一个区号。所谓86手机号码格式,就是在11位手机号前加上+86,手机号码前面不加0。下表以样例号码131 2345 6789为例,列出不同场合的填法。

手机号码在不同场合的填法
填写的地方怎么填示例
有国家/地区选项的境外网站或App国家/地区选“中国(+86)”,号码栏只填11位,不要再加86131 2345 6789
没有国家/地区选项的表单从+86开始填+86 131 2345 6789
要求E.164格式的系统+86后直接接11位,不留空格+8613123456789
国内网站、App和快递单只填11位,不加8613123456789
在境外用座机拨打先拨当地的国际冠码,再拨86和号码;国际冠码是00的地方就拨00860086 131 2345 6789
手机通讯录存成+86格式,出境后也能直接拨打+86 131 2345 6789

在手机拨号键盘上长按0可以输入+。+在任何国家/地区都代表当地的国际冠码,所以存号码、填表时用+86比0086更通用。中国大陆和欧洲多数国家的国际冠码是00,美国和加拿大是011。不存在086这个区号。

各地写法

国际电话号码格式:座机去掉区号前的0

国际电话号码格式各地通用:先写+和国际区号,再写去掉国内长途前缀的号码。中国大陆的座机要去掉区号前的0,手机号码本来就不带0。下表的中国、中国香港和意大利号码是libphonenumber的样例号码,英国和美国号码取自当地为影视剧保留的号段。

国家/地区E.164国际格式国内格式
中国(手机)
+86后直接接11位,不加0。
+8613123456789+86 131 2345 6789131 2345 6789
中国(固定电话)
北京区号010,写成国际格式时去掉0。
+861012345678+86 10 1234 5678010 1234 5678
中国(400号码)
格式可以转换,但通常无法从境外拨通。
+864001234567+86 400 123 4567400 123 4567
中国香港(手机)
香港号码8位,没有区号。
+85251234567+852 5123 45675123 4567
英国(固定电话)
英国通信管理机构Ofcom为影视剧保留的伦敦号码,同样去掉开头的0。
+442079460123+44 20 7946 0123020 7946 0123
意大利(固定电话)
意大利座机的0是号码的一部分,+39后面要保留。
+390212345678+39 02 1234 567802 1234 5678
美国
555-0100到555-0199为影视剧保留。加拿大也使用+1。
+12125550123+1 212 555 0123(212) 555-0123
座机号码

座机号码格式:区号加7到8位号码

座机号码由区号和本地号码组成。区号以0开头:北京是010;上海、广州、天津、重庆、沈阳、南京、武汉、成都、西安是02X,比如上海021、广州020;其他城市是4位的0XXX。本地号码是7位或8位。

建议这样做

  • 区号和本地号码之间用短横线或空格隔开,比如010-12345678,或者010 1234 5678。
  • 写成国际格式时去掉区号前的0:+86 10 1234 5678。
  • 给外地或境外的人留号码时,一定带上区号。
  • 有分机号时写在后面,比如010-12345678转123。

不要这样做

  • 写成+86 010 1234 5678或+86 (0)10 1234 5678:+86后面不保留区号的0,有些表单会因此报错。
  • 只写本地号码:没有区号,外地的人拨不通,本工具也判断不了号码属于哪个城市。
  • 给400号码加区号:400号码是全国统一的10位号码,本身没有区号。
批量检查

批量检查表格里的手机号码格式

从Excel、WPS表格或CSV文件里复制一整列号码,粘贴到上方的“批量检查”中,工具会逐行检查格式,并生成E.164列。号码只在这个标签页中处理,不会上传。

整列粘贴

每行一个号码,空格、短横线和括号都能识别;表格去掉了座机区号前的0,也能正常读取。一次最多检查500行。

逐行给出结果

每行显示有效、未分配、无效或位数不足,并列出E.164格式、号码类型和国家/地区。

下载CSV或复制E.164列

把E.164列贴回原表格。写法统一以后,带+86和不带+86的重复号码也能对上。

先选对国家/地区

没有+的号码按你选的国家/地区读取。如果选成美国,以1开头的11位数字可能被当成美国号码,所以检查国内名单时要选中国。

开发者

开发者:只用手机号码正则表达式为什么不够

常见的手机号正则要么只检查“1开头、11位”,要么把号段写死在表达式里。前者会放过未分配的号段;后者在19X、16X这样的新号段启用后,会把有效号码误判为无效。更稳妥的做法是用带编号规则数据的库解析号码,校验通过后以E.164格式存储,显示时再转换成国内格式或国际格式。

import { parsePhoneNumberFromString } from 'libphonenumber-js/max'

const phone = parsePhoneNumberFromString('131 2345 6789', 'CN')

phone.isValid()             // true
phone.getType()             // 'MOBILE'
phone.number                // '+8613123456789'(E.164)
phone.formatInternational() // '+86 131 2345 6789'
phone.formatNational()      // '131 2345 6789'
phone.getURI()              // 'tel:+8613123456789'

// 只看“1开头、11位”的正则,会放过未分配的154号段
/^1[3-9]\d{9}$/.test('15412345678')                       // true
parsePhoneNumberFromString('15412345678', 'CN').isValid() // false

本页使用libphonenumber-js(max元数据),底层是Google公开的libphonenumber号码数据(v9.0.40)。体积更小的min元数据只检查位数,不检查号段。

FAQ

常见问题

手机号前加86还是0086?

看在哪里填。表单有单独的国家/地区栏时,选中国(+86),号码栏只填11位手机号。只有一个号码栏时,写+86再接11位,比如+86 131 2345 6789。0086是在国际冠码为00的国家/地区拨打中国号码时的写法,和+86指向同一个号码。+在任何国家/地区都代表国际冠码,所以填表和存通讯录时用+86更通用。

中国的国际区号是086还是86?

是86。国际区号本身不带0,+86和0086表示的都是86。086是把国际区号和国内长途前缀0混在一起的写法,并不存在,填进表单往往会被判为格式错误。在上面的工具里,086开头的手机号码会被判为无效(位数太多)。

手机号码是几位数?有10位的手机号吗?

中国大陆的手机号码都是11位,以1开头,没有10位的手机号码。少一位多半是漏打了数字,工具会提示位数不足。写成+86国际格式时,+86后面还是这11位,前面不加0。

注册时提示“手机号码格式不正确”怎么办?

先检查这几点:是否多打或少打了一位;是否混进了全角数字或其他符号;表单是否要求先在国家/地区栏选择中国(+86);号码栏里是否又重复加了86或0086。然后把号码粘贴到上面的工具里,显示有效后,按表单的要求复制国内格式或E.164格式再填。如果工具显示有效、表单仍然报错,可能是表单的验证规则没有收录16X、19X等较新的号段,可以联系网站或App的客服。

格式有效就说明号码在使用吗?能做空号检测吗?

不能。格式有效只说明号码符合中国大陆的编号规则,而且号段已经分配。号码有没有开户、是否停机、是不是空号,只看号码本身判断不了,本工具也不做空号检测。已经销号的号码,格式照样有效。想确认号码能不能打通,只能拨打一次,或者发送短信验证码。如果是陌生号码打来的电话,可以先查这个号码是哪里的,再对照识别诈骗电话的风险信号。

座机号码一定要加区号吗?

在同一个城市用座机拨打本地座机,可以不加区号。从外地或境外拨打,以及在表单、名片上写号码时,都要带上区号,比如北京的010。在上面的工具里也要输入区号,否则工具无法判断号码属于哪个城市,只会提示位数不够或号段未分配。写成+86国际格式时,去掉区号前的0。

400和800开头的号码能写成+86国际格式吗?

格式上可以:400 123 4567写成+86 400 123 4567,E.164格式是+864001234567。但400号码由主叫和被叫分摊话费,800号码由被叫付费、通常只能用固定电话拨打,这两类号码一般无法从境外拨通,libphonenumber的号码数据也把它们标为不支持国际拨打。给境外的人留联系方式时,最好同时留一个带区号的座机号码或手机号码。

保存或提交之前,先验证手机号码格式

粘贴一个号码或一整列号码,复制+86国际格式或E.164格式。

验证号码格式