Skip to content

Instantly share code, notes, and snippets.

@JerryC8080
Created March 21, 2016 08:08
Show Gist options
  • Save JerryC8080/b4005ef5c4902b1ea7a0 to your computer and use it in GitHub Desktop.
Save JerryC8080/b4005ef5c4902b1ea7a0 to your computer and use it in GitHub Desktop.
匹配中国电话号码的正则表达式
/**
电信
中国电信手机号码开头数字
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
从以上我们可以看到第一位是【1】开头,第二位则则有【3,4,5,7,8】,第三位则是【0-9】,第三位之后则是数字【0-9】。从而我们可以得出一个符合当前的手机号码验证正则表达式。
* /
!/^1[3|4|5|7|8][0-9]{9}$/.test(phone)
@Rudy24
Copy link

Rudy24 commented Jun 2, 2018

/^1[3-9](\d{9})$/.test(phone)

@linkdesu
Copy link

/^1[3-9](\d{9})$/.test(phone)

@Rudy24 采纳!谢谢大家~

@ivanberry
Copy link

为什么需要捕获呀?

@vickyi
Copy link

vickyi commented Dec 12, 2018

select count(1) from temp.dim_mobile_phone a where a.phone_num not RLIKE "^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$";

@VincentSit
Copy link

大家可以看看我维护的中国大陆手机号码正则表达式集合,已经维护四年多了,会及时更新,目前所有的号段规则都支持,希望能帮到大家。

匹配所有号码(手机卡 + 数据卡 + 上网卡)

^1(?:3\d{3}|5[^4]\d{2}|8\d{3}|7[^29](?(?<=4)(?:0\d|1[0-2]|9\d))|9[189]\d{2}|6[67]\d{2}|4(?:10\d|40\d|6\d{2}|8\d{2}|[579]\d{2}))\d{6}$

@snowdream
Copy link

大家可以看看我维护的中国大陆手机号码正则表达式集合,已经维护四年多了,会及时更新,目前所有的号段规则都支持,希望能帮到大家。

匹配所有号码(手机卡 + 数据卡 + 上网卡)

^1(?:3\d{3}|5[^4]\d{2}|8\d{3}|7[^29](?(?<=4)(?:0\d|1[0-2]|9\d))|9[189]\d{2}|6[67]\d{2}|4(?:10\d|40\d|6\d{2}|8\d{2}|[579]\d{2}))\d{6}$

辛苦了

@iHTCboy
Copy link

iHTCboy commented Nov 25, 2020

现在电信已经有 19 了, @VincentSit 辛苦啦

@VincentSit
Copy link

现在电信已经有 19 了, @VincentSit 辛苦啦

[抱拳],电信的 19 好像已经支持了啊。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment