为了账号安全,请及时绑定邮箱和手机立即绑定

最新手机号码正则表达式

标签:
Java JavaScript

最近项目需要本地检测手机号码正确性,于是用了一段代码,但是后来发现这个代码块已经过时了。在网上简单找了下,发现没有最新的一个公开代码,可能很多人都是用的下面正则方法来检测手机号码,那你们该更新代码了。众所周知,三大运营商已经增加了不少手机号码字段,还用之前的代码就会流失部分用户了。(只讨论国内坏境)

于是我在网上查了些数据,在之前的代码基础上改了下,方便适用于现在的环境。

所用方法依然还是正则表达式,正则表达式主要就是用一个公式来匹配字符串是否具备某类规则。我们这里的思路和之前也是一样,只是对之前方法的一个补充与解析。新的方法只匹配了手机号码字段前三位,有些朋友可能还不太懂这个方法,为了方便大家使用,在最后会为大家简单拆分该方法,相信大家很快就会灵活应用了。

文/ROB_YONG(简书作者)
原文链接:http://www.jianshu.com/p/e8477fdccbe9
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
/**

  • 手机号码
  • 移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
  • 联通:130,131,132,152,155,156,185,186
  • 电信:133,1349,153,180,189
    /
    NSString
    MOBILE = @"^1(3[0-9]5[0-35-9]8[025-9])\d{8}$";
    /
    10 中国移动:China Mobile
    11
    134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
    12 /
    NSString
    CM = @"^1(340-8\d)\d{7}$";
    /

    15 中国联通:China Unicom
    16
    130,131,132,152,155,156,185,186
    17 /
    NSString
    CU = @"^1(3[0-2]5[256]8[56])\d{8}$";
    /
    20 中国电信:China Telecom
    21
    133,1349,153,180,189
    22 /
    NSString
    CT = @"^1((33538[09])[0-9]349)\d{7}$";
    /

    25 大陆地区固话及小灵通
    26
    区号:010,020,021,022,023,024,025,027,028,029
    27 号码:七位或八位
    28
    /
    // NSString * PHS = @"^0(102[0-5789]\d{3})\d{7,8}$";

    NSPredicate regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
    NSPredicate
    regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];
    NSPredicate regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];
    NSPredicate
    regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];

    if (([regextestmobile evaluateWithObject:mobileNum] == YES)
    ([regextestcm evaluateWithObject:mobileNum] == YES)
    ([regextestct evaluateWithObject:mobileNum] == YES)
    ([regextestcu evaluateWithObject:mobileNum] == YES))
    {
    return YES;
    }
    else
    {
    return NO;
    }
    }
    (BOOL)isMobileNumber:(NSString *)mobileNum
    {
    if (mobileNum.length != 11)
    {
    return NO;
    }
    /**

  • 手机号码:
  • 13[0-9], 14[5,7], 15[0, 1, 2, 3, 5, 6, 7, 8, 9], 17[6, 7, 8], 18[0-9], 170[0-9]
  • 移动号段: 134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705
  • 联通号段: 130,131,132,155,156,185,186,145,176,1709
  • 电信号段: 133,153,180,181,189,177,1700
    /
    NSString
    MOBILE = @"^1(3[0-9]4[57]5[0-35-9]8[0-9]70)\d{8}$";
    /**
  • 中国移动:China Mobile
  • 134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705
    /
    NSString
    CM = @"(^1(3[4-9]4[7]5[0-27-9]7[8]8[2-478])\d{8}$)(^1705\d{7}$)";
    /**
  • 中国联通:China Unicom
  • 130,131,132,155,156,185,186,145,176,1709
    /
    NSString
    CU = @"(^1(3[0-2]4[5]5[56]7[6]8[56])\d{8}$)(^1709\d{7}$)";
    /**
  • 中国电信:China Telecom
  • 133,153,180,181,189,177,1700
    /
    NSString
    CT = @"(^1(3353778[019])\d{8}$)(^1700\d{7}$)";

    NSPredicate regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
    NSPredicate
    regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];
    NSPredicate regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];
    NSPredicate
    regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];

    if (([regextestmobile evaluateWithObject:mobileNum] == YES)
    ([regextestcm evaluateWithObject:mobileNum] == YES)
    ([regextestct evaluateWithObject:mobileNum] == YES)
    ([regextestcu evaluateWithObject:mobileNum] == YES))
    {
    return YES;
    }
    else
    {
    return NO;
    }
    }
    NSString MOBILE = @"^1(3[0-9]4[57]5[0-35-9]8[0-9]70)\d{8}$";
    NSPredicate
    regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
    return [regextestmobile evaluateWithObject:mobileNum];
    (BOOL)isChinaMobile:(NSString )phoneNum
    {
    NSString
    CM = @"(^1(3[4-9]4[7]5[0-27-9]7[8]8[2-478])\d{8}$)(^1705\d{7}$)";
    NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];
    return [regextestcm evaluateWithObject:phoneNum];
    }

    • (NSString )getPhoneNumType:(NSString )phoneNum
      {
      return [self isChinaMobile:phoneNum]? @"中国移动": ([self isChinaUnicom:phoneNum]? @"中国联通":([self isChinaTelecom:phoneNum]? @"中国电信": @"未知"));
      }
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
168
获赞与收藏
3550

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消