基于正则验证中国手机号码(2017)

2017-12-22 08:08:47 +08:00
 Septembers

以下正则基于 "中国内地移动终端通讯号码" 使用 regexgen 构建生成

正则验证范围包括 中国移动、中国联通、中国电信(含虚拟运营商号段,不含物联网及卫星号段)

^1(?:70\d|(?:9[89]|8[0-24-9]|7[135-8]|66|5[0-35-9])\d|3(?:4[0-8]|[0-35-9]\d))\d{7}$

本正则构建于 2017/12/22 请注意实效性,请以最新的《电信网编号计划》为准。

see https://zh.wikipedia.org/wiki/中国内地移动终端通讯号码

see http://www.miit.gov.cn/n1146290/n4388791/c5623706/content.html

see https://septs.pw/archives/59


如需生成器请参考如下

https://gist.github.com/septs/8cb9f6298fa59caef39229fb04c36609

5327 次点击
所在节点    正则表达式
43 条回复
34C
2017-12-22 10:46:31 +08:00
前端验证 1 开头 10 数字,后端发短信验证码才是王道……
如果不需要短信验证码的,怎么验都是白搭,填个 13800138000 就过了
ZxBing0066
2017-12-22 11:08:23 +08:00
没啥意义 直接 /1\d{10}/够用了,真实性还得靠短信
mokeyjay
2017-12-22 11:10:15 +08:00
没啥意义 直接 /1\d{10}/够用了,真实性还得靠短信 +1
freeminder
2017-12-22 11:11:43 +08:00
写这么多,尾巴还是`\d{7}`
ven
2017-12-22 11:17:04 +08:00
@34C 后端也不一定要验证,好一点的短信服务都是按照成功付费的,13800138000 这种一般会返回空号或者不允许发送~
wzw
2017-12-22 11:38:53 +08:00
@ven 阿里云 好像 不是成功付费
pofycn
2017-12-22 11:40:26 +08:00
马一下,说不定以后用的到哈哈
guyskk0x0
2017-12-22 11:42:56 +08:00
重要的发短信验证码验证,不重要的验证下 1 开头 11 位数字就行了,复杂的正则容易误杀正常手机号
guyskk0x0
2017-12-22 11:46:12 +08:00
之前遇到过用户反馈注册不了,排查发现是正则的锅,这种有时效性的正则尽量不要用
quicknight
2017-12-22 11:55:09 +08:00
用正则式验证手机号,除了给维护带来麻烦,几乎没有好处
验证手机号,只能靠短信
quicknight
2017-12-22 11:56:00 +08:00
@jingniao 这种都比复杂的正则式要靠谱
oh
2017-12-22 11:59:57 +08:00
@ven 所以更可以验证有效性啊
geelaw
2017-12-22 12:05:29 +08:00
不要用 \d,它不是 [0-9] 的另一种写法
Oo0
2017-12-22 12:08:32 +08:00
短信才靠譜
Septembers
2017-12-22 12:12:19 +08:00
geelaw
2017-12-22 12:25:24 +08:00
@Septembers 你的第一个链接不是已经告诉你了么?
jason19659
2017-12-22 13:47:50 +08:00
1\d{10}
GooMS
2017-12-22 13:52:26 +08:00
我一般只验证是数字就行了,然后靠短信验证码
q409195961
2017-12-22 14:27:11 +08:00
有谁分享下最新的省市区 JSON 数据呗
Septembers
2017-12-22 14:34:36 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/416713

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX