更新日期:2019-12-24

注意更新日期,开发者要注意以后号码段更新

更新日志:

时间:2019-12-24

工信部核发190、192、196、197号段

中国广电第一次有了自己的号码段

开发项目时,总是要用到一些正则验证,就数手机号码规则比较难收集,现总结如下:

规则

【数据卡】:14号段以前为上网卡专属号段,如中国联通的是145,中国移动的是147,中国电信的是149等等。

【虚拟运营商】:170[1700/1701/1702]、162(电信),1703/1705/1706、165(移动),1704/1707/1708/1709(联通)、171、167(联通)

【卫星通信】: 1740[0-5] (电信),1349(移动)

【物联网网号】:10648、1440 (移动),10646、146(联通),10649、1410(电信)

【国家工信部应急通信】:1740[6-9],1741[0-2]

手机号码: 13[0-9], 14[5,6,7,8,9], 15[0-3, 5-9], 16[2,5,6,7], 17[0-8], 18[0-9], 19[0-3, 5-9]

移动号段: 13[4-9],147,148,15[0-2,7-9],165,170[3,5,6],172,178,18[2-4,7-8],19[5,7,8]

联通号段: 130,131,132,145,146,155,156,166,167,170[4,7,8,9],171,175,176,185,186,196

电信号段: 133,149,153,162,170[0,1,2],173,174[0-5],177,180,181,189,19[0,1,3,9]

广电号段: 192

实现

我是iOS开发者,所以就用Objective-c语言实现了,其它的语言自行转换

简单格式验证

如果只是需要验证手机号码的格式,可以简单写成这样:

/**

* 手机号码格式验证

*/

+(BOOL)isMobile:(NSString *)phoneNum {

NSString *MOBILE = @"^(13[0-9]|14[5-9]|15[0-3,5-9]|16[2,5,6,7]|17[0-8]|18[0-9]|19[0-3,5-9])\\d{8}$";

NSPredicate *pred_mobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];

return [pred_mobile evaluateWithObject:phoneNum];

}

严格验证

/**

* 手机号码格式验证

*/

+(BOOL)isTelphoneNumber:(NSString *)telNum{

telNum = [telNum stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

if ([telNum length] != 11) {

return NO;

}

/**

* 中国移动:China Mobile

*13[4-9],147,148,15[0-2,7-9],165,170[3,5,6],172,178,18[2-4,7-8],19[5,7,8]

*/

NSString *CM_NUM = @"^((13[4-9])|(14[7-8])|(15[0-2,7-9])|(165)|(178)|(18[2-4,7-8])|(19[5,7,8]))\\d{8}|(170[3,5,6])\\d{7}$";

/**

* 中国联通:China Unicom

* 130,131,132,145,146,155,156,166,167,170[4,7,8,9],171,175,176,185,186,196

*/

NSString *CU_NUM = @"^((13[0-2])|(14[5,6])|(15[5-6])|(16[6-7])|(17[1,5,6])|(18[5,6])|(196))\\d{8}|(170[4,7-9])\\d{7}$";

/**

* 中国电信:China Telecom

* 133,149,153,162,170[0,1,2],173,174[0-5],177,180,181,189,19[0,1,3,9]

*/

NSString *CT_NUM = @"^((133)|(149)|(153)|(162)|(17[3,7])|(18[0,1,9])|(19[0,1,3,9]))\\d{8}|((170[0-2])|(174[0-5]))\\d{7}$";

/**

* 中国广电:China Broadcasting Network

* 192

*/

NSString *CBN_NUM = @"^((192))\\d{8}$";

NSPredicate *pred_CM = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",CM_NUM];

NSPredicate *pred_CU = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",CU_NUM];

NSPredicate *pred_CT = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",CT_NUM];

NSPredicate *pred_CBN = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CBN_NUM];

BOOL isMatch_CM = [pred_CM evaluateWithObject:telNum];

BOOL isMatch_CU = [pred_CU evaluateWithObject:telNum];

BOOL isMatch_CT = [pred_CT evaluateWithObject:telNum];

BOOL isMatch_CBN = [pred_CBN evaluateWithObject:telNum];

if (isMatch_CM || isMatch_CT || isMatch_CU || isMatch_CBN) {

return YES;

}

return NO;

}

当然,上面的正则方法分拆开来,就可以单独验证号段的归属了!

PS:携号转网这种特殊情况,咱们就先不考虑了,考虑了也没用!

更新日期:2019-12-24

验证手机号的c语言程序,手机号码正则表达式相关推荐

  1. js 正则验证手机号,用户名,密码

    js 正则验证手机号,用户名,密码 /*** 手机号码* @param val 字符串* @returns true: 手机号码正确*/ export function verifyPhone(val ...

  2. Java手机号码正则表达式验证,手机号段根据2020年最新号段所做参考

    最近需要实现java手机号码正则表达式验证,然而百度了一下发现结果挺多的,但是好像号段不全,基本上都是几年前的结果,大部分刚好就没我166的号段,我今天也查了一下最新的手机号段,重新写一遍(根据需求我 ...

  3. php验证固定电话,php验证手机号_php中固定电话号码和手机号码正则表达式验证...

    摘要 腾兴网为您分享:php中固定电话号码和手机号码正则表达式验证,智影,优衣库,熊猫视频,万科物业等软件知识,以及万得股票,礼包,dwg转dwf,软件打包工具,蜜桃儿,翻译米,是的没错表情包,上古卷 ...

  4. 输入手机号的html语言,关于html里插入javascript对手机号码格式验证

    关于html里插入javascript对手机号码格式验证0 先贴入代码 *手机号码: function phoneCheck(input){ if(input==""){ aler ...

  5. PHP正则表达式验证手机号、邮箱、身份证号码、姓名等

    在PHP编写的程序中,为了保证代码本身的流程安全,少不了对数据流进行一些效验的工作.而PHP给我提供了正则表达式验证函数,我们可以很方便的通过正则表达式的验证函数,来检查数据流是否符合标准. 今天我们 ...

  6. 正则表达式验证手机号,邮箱

    正则表达式 1.什么是正则表达式 正则表达式能够描述字符串的格式 通常用于验证字符串内容 正则表达式并不是java语言的内容,而是独立于编程语言的体系 2.为什么需要正则表达式 在人机信息交互时,可以 ...

  7. js 正则匹配邮箱_JS正则表达式验证手机号和邮箱

    一.验证手机号 functionisPoneAvailable(poneInput) {var myreg=/^[1][3,4,5,7,8][0-9]{9}$/;if (!myreg.test(pon ...

  8. 正则表达式——验证手机号和电话号码

    在很多网页中总会涉及到输入手机号码或者电话号码,这个时候当然不能随便输入,需要一个验证来判断是否输入的正确手机号,而这个验证就是用到正则表达式来实现的,下面就来看看如何写一个验证手机号的正则表达式. ...

  9. java pattern 手机号_业余草 Java正则表达式,验证手机号和电话号码

    Java 正则表达式 正则表达式定义了字符串的模式. 正则表达式可以用来搜索.编辑或处理文本. 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别. 正则表达式实例 一个字符串其实就是一个简 ...

最新文章

  1. linux下的trap命令
  2. hdu 3199 动态规划
  3. 8、mysql数据表中数据的增删改
  4. 小小突击队为什么服务器正在维护中,4399小小突击队3月20日5:30更新维护公告!...
  5. html如何绘制棒棒糖,如何使用css来画一个棒棒糖
  6. 转折后的总结--2014年找工作
  7. Java中Comparable和Comparator接口的区别
  8. 阿里巴巴Java开发 之 编程规约
  9. springboot获取客户端发来的数据
  10. Windows核心编程_锁屏
  11. 【Grasshopper基础1】怎样制作一个Grasshopper电池 / 二次开发基础
  12. 网络游戏防沉迷的理想与现实
  13. 树莓派搭建文件服务器
  14. 增加项目报告功能,支持与TAPD、Jira、禅道双向同步缺陷,MeterSphere开源持续测试平台v1.15.0发布
  15. SAP 固定资产模块上线配置
  16. 英语说10点20有计算机课,101 projects  in 1001 days实例
  17. unity复现中的错误
  18. 试用分析一国宏观经济内外均衡的过程及其政策搭配
  19. Android音频混响特效的设置
  20. AJAX 后端处理程序

热门文章

  1. 【JAVA - ArrayList】炸金花的模拟实现流程(买牌,洗牌,发牌)
  2. ROS(五)之话题编程:msg文件
  3. 在线帮助中心,轻松解决售后服务问题
  4. 制作机顶盒CM311-1a的armbian img文件
  5. kong及konga的最新版本安装
  6. oracle找不到 dba_tables,不经意发现的dba_objects和dba_tables中的细节
  7. 分布式计算模式:Stream
  8. my read travel
  9. MSYS2使用教程——win10系统64位安装msys2最新版(msys2-x86_xxxx.exe)
  10. C语言中预编译/预处理的使用