分享一组开源的匹配中国大陆手机号码的正则表达式

正则表达式,又称正规表示法、常规表示法,正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。

很多程序员都需要用到正则表达式,它可以帮助开发者很好的判断一个字符串是否合法:

  • 比如判断一个手机号的格式是否正确
  • 手机号码的匹配
  • 填写的邮箱格式是否正确

但是呢,国内手机号的匹配还是有点难度,不仅有三大运营商,这三大运营商还经常推出一些新号段,因此判断手机格式还是有点复杂的

今天猿妹和大家分享一组超级全面的匹配大陆手机号的正则表达式——ChinaMobilePhoneNumberRegex

到底有多全面呢?往下看你就知道了,比如:

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

代码如下:

^(?:+?86)?1(?:3d{3}|5[^4D]d{2}|8d{3}|7(?:[01356789]d{2}|4(?:0d|1[0-2]|9d))|9[189]d{2}|6[567]d{2}|4(?:[14]0d{3}|[68]d{4}|[579]d{2}))d{6}$

匹配所有支持短信功能的号码(手机卡 + 上网卡)

代码如下:

^(?:+?86)?1(?:3d{3}|5[^4D]d{2}|8d{3}|7(?:[01356789]d{2}|4(?:0d|1[0-2]|9d))|9[189]d{2}|6[567]d{2}|4[579]d{2})d{6}$

手机卡

匹配所有

代码如下:

^(?:+?86)?1(?:3d{3}|5[^4D]d{2}|8d{3}|7(?:[35678]d{2}|4(?:0d|1[0-2]|9d))|9[189]d{2}|66d{2})d{6}$

匹配中国移动

代码如下:

^(?:+?86)?1(?:3(?:4[^9D]|[5-9]d)|5[^3-6D]d|8[23478]d|(?:78|98)d)d{7}$

匹配中国联通

代码如下:

^(?:+?86)?1(?:3[0-2]|[578][56]|66)d{8}$

匹配中国电信

代码如下:

^(?:+?86)?1(?:3(?:3d|49)d|53d{2}|8[019]d{2}|7(?:[37]d{2}|40[0-5])|9[19]d{2})d{6}$

匹配北京船舶通信导航有限公司(海事卫星通信)

代码如下:

^(?:+?86)?1749d{7}$

工业和信息化部应急通信保障中心(应急通信)

代码如下:

^(?:+?86)?174(?:0[6-9]|1[0-2])d{6}$

虚拟运营商

匹配所有

代码如下:

^(?:+?86)?1(?:7[01]|6[57])d{8}$

匹配中国移动

代码如下:

^(?:+?86)?1(?:65d|70[356])d{7}$

匹配中国联通

代码如下:

^(?:+?86)?1(?:70[4789]|71d|67d)d{7}$

匹配中国电信

代码如下:

^(?:+?86)?170[0-2]d{7}$

物联网数据卡

匹配所有

代码如下:

^(?:+?86)?14(?:[14]0|[68]d)d{9}$

匹配中国移动

代码如下:

^(?:+?86)?14(?:40|8d)d{9}$

匹配中国联通

代码如下:

^(?:+?86)?146d{10}$

匹配中国电信

代码如下:

^(?:+?86)?1410d{9}$

上网卡

匹配所有

代码如下:

^(?:+?86)?14[579]d{8}$

匹配中国移动

代码如下:

^(?:+?86)?147d{8}$

匹配中国联通

代码如下:

^(?:+?86)?145d{8}$

匹配中国电信

代码如下:

^(?:+?86)?149d{8}$

里面还包含了各种规则介绍。

目前,该项目已经在GitHub上获得 3340 个Star,333个Fork(GitHub地址:https://github.com/VincentSit/ChinaMobilePhoneNumberRegex

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 最新手机号码、电话号码正则表达式

    今天开始小编为大家系统整理关于正则表达式的一系列文章,希望大家会喜欢. 首先了解一下正则表达式的概念,正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串.将匹配的子串做替换或者从某个串中取出符合某个条件的子串等. java手机号码正则表达式: /** * 验证手机号码 * * 移动号码段:139.138.137.136.135.134.150.151.152.157.158.159.182.183.187.188.147 * 联通号码

  • js验证电话号码手机号码的正则表达式

    下面提供的几款关于js 验证电话号码手机号码正则表达式,是我从网上收藏了,不过都是精品,专业针对手机号与电话号码进行验证的. 复制代码 代码如下: function checkPhone(phone) { //验证电话号码手机号码,包含153,159号段 if (phone==""){ alert("电话号码不能为空!"); return false; } if (phone != ""){ var p1 = /^(([0+]d{2,3}-)?(

  • 正则表达式验证用户名、密码、手机号码、身份证(推荐)

    废话不多说了,下面给大家介绍使用正则表达式验证用户名.密码.手机号码.身份证的写法,需要的的朋友参考下吧 //用户名 + (BOOL) validateUserName:(NSString *)name { NSString *userNameRegex = @"^[A-Za-z0-9]{3,20}+$"; NSPredicate *userNamePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@&q

  • 2019手机号码JS正则表达式验证实例代码

    概念 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑. 简介 正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"))操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串

  • 实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)

    //校验是否全由数字组成 复制代码 代码如下: function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false return true } //校验登录名:只能输入5-20个以字母开头.可带数字."_"."."的字串 复制代码 代码如下: function isRegisterUserName(s) { var patrn=/^[a-zA-Z]{1}([a-zA-Z0

  • 使用正则表达式判断是否为手机号码(简单且实用)

    下面一段代码是关于正在表达式判断是否为手机号码的代码,具体代码如下所述: public static boolean isMobileNO(String mobile) { Pattern p = Pattern .compile("^((13[0-9])|(15[^4,\\D])|(18[0-9]))\\d{8}$"); Matcher m = p.matcher(mobile); return m.matches(); } 以上所述是小编给大家介绍的使用正则表达式判断是否为手机号码

  • 匹配移动/联通/电信手机号码正则表达式小结

    中国移动 134.135.136.137.138.139.150.151.152.157.158.159.187.188 ,147(数据卡) 中国联 通130.131.132.155.156.185.186 中国电信133.153.180.189 CDMA 133,153 正 则如下: 复制代码 代码如下: /// <summary> /// 匹配移动手机号 /// </summary> public const string PATTERN_CMCMOBILENUM = @&qu

  • 分享一组开源的匹配中国大陆手机号码的正则表达式

    正则表达式,又称正规表示法.常规表示法,正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串. 很多程序员都需要用到正则表达式,它可以帮助开发者很好的判断一个字符串是否合法: 比如判断一个手机号的格式是否正确 手机号码的匹配 填写的邮箱格式是否正确 但是呢,国内手机号的匹配还是有点难度,不仅有三大运营商,这三大运营商还经常推出一些新号段,因此判断手机格式还是有点复杂的 今天猿妹和大家分享一组超级全面的匹配大陆手机号的正则表达式--ChinaMobilePhoneNumberRege

  • iOS 正则表达式判断纯数字及匹配11位手机号码的方法

    第一种使用正则表达式 判断 //是否是纯数字 + (BOOL)isNumText:(NSString *)str{ NSString * regex = @"(/^[0-9]*$/)"; NSPredicate * pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; BOOL isMatch = [pred evaluateWithObject:str]; if (isMatch)

  • python绘制中国大陆人口热力图

    这篇文章给出了如何绘制中国人口密度图,但是运行存在一些问题,我在一些地方进行了修改. 本人使用的IDE是anaconda,因此事先在anaconda prompt 中安装Basemap包 conda install Basemap 新建文档,导入需要的包 import matplotlib.pyplot as plt from mpl_toolkits.basemap import Basemap from matplotlib.patches import Polygon from matpl

  • JS匹配日期和时间的正则表达式示例

    本文实例讲述了JS匹配日期和时间的正则表达式.分享给大家供大家参考,具体如下: //日期的正则表达式 var reg = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/; var regExp = new RegExp(reg); if(!regExp.test(value)){ alert("日期格式不正确,正确格式为:2014-01-01"); return; } //时间的正则表达式 var reg = /^(2

  • 一个容易犯错的js手机号码验证正则表达式(推荐)

    写一个简单的正则表达式,用来校验11位手机号码,开头允许是13.15.18,我一开始这样写: var reg = /^(13[0-9]{9})|(15[0-9]{9})|(18[0-9]{9})$/; 运行发现,即使是 13988888877157777,也能通过验证,这说明这个写法错了,我的本意是希望这样: ^(13[0-9]{9})$ 或者 ^(15[0-9]{9})$ 或者 ^(18[0-9]{9})$ 所以正确写法是:var reg = /^1[358][0-9]{9}$/;这样才能保证

  • java如何从地址串中解析提取省市区(完美匹配中国所有地址)

    前言 前段时间项目中要解析android定位传的一个地址串 分别存入 省 市 区 字段,网上找的 写正则 的方法大都只能解析 xx省xx市xx区 这样的大众化地址,而对于一些命名比较特别的地址(比如:西藏自治区日喀则地区日喀则市 / 海南省省直辖县级行政单位中沙群岛的岛礁及其海域)就会出问题,我就将正则式进行了修改完善. 废话不多说 直接上代码: package com.jt.util; import java.util.ArrayList; import java.util.LinkedHas

  • php 手机号码验证正则表达式

    比较简洁的代码一: $str = ''; $isMatched = preg_match('/^0?(13|14|15|17|18)[0-9]{9}$/', $str, $matches); var_dump($isMatched, $matches); 代码二 <?php //正则表达式 $tel = "15558530459"; //作者的手机号码,如果有疑问可以电话联系我,或者QQ联系我,我的QQ是mezongzi@qq.com if (strlen($tel) == &q

  • 正则表达式匹配解析过程探讨分析(正则表达式匹配原理)

    已经有多篇关于正则表达式介绍的文章,随着我们越来越多使用正则表达式,想对性能做优化.减少我们正则表达式书写匹配Bug.我们不得不进一步深入了解正则表达式执行过程了.下面我们一起学习,分析下正则表达式执行过程.我们会用regexbuddy测试工具分解执行过程,具体工具使用,可以看:正则表达式性能测试工具推荐.优化工具推荐(regexbuddy推荐).要了解正则表达式解析过程前,我们先来熟悉几个概念. 常见正则表达式引擎 引擎决定了正则表达式匹配方法及内部搜索过程,了解它至关重要的.目前主要流行引擎

  • c#匹配整数和小数的正则表达式

    匹配整数的一种表达式: Regex.IsMatch(inputerstr, "^([0-9]{1,})$") 其中Inputerstr是要匹配的字符串 这个表达式仅匹配整数,如果是整数形式返回true,否则为false 匹配小数格式的表达式: Regex.IsMatch(inputerstr, "^([0-9]{1,}[.][0-9]*)$") 其中Inputerstr是要匹配的字符串 这个表达式仅匹配数字中有小数点格式的数字,如果是带有小数点格式的纯数字,返回tr

随机推荐