美文网首页ios常用
2018-07-05 iOS 判断手机号码是否有效

2018-07-05 iOS 判断手机号码是否有效

作者: 龙之天下 | 来源:发表于2018-07-05 14:10 被阅读40次

    1.三大运营商手机频号都有增加:

    新增频号如下:(若有不全,希望给予指正,现在这里谢谢了)

      中国移动:198(0-9)号段、148(0-9)号段(物联网业务专用号段)、 1440(0-9)号段(物联网网号)
      中国电信:199(0-9)号段、1410(0-9)号段(物联网网号)
      中国联通:166(0-9)号段、146(0-9)号段(物联网业务专用号段)
          其中,198、199、166号段是可以用于普通用户的手机的
    

    2.做开发需要进行判断手机号码的有效性。

    在巨人的基础上增加了新频号,若有错误,请给予更正
    

    1)、手机号码频号如下:

      移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,183,187,188,198
      联通:130,131,132,152,155,156,176,185,186,166
      电信:133,1349,153,180,189,199
    

    2)、代码如下:

    /**
      *  Mobile
      * 
      */
    NSString * MOBILE = @"^1(3[0-9]|5[0-3,5-9]|6[6]|7[0135678]|8[0-9]|9[89])\\d{8}$";
    
    /**
      * 中国移动:China Mobile
      * 134[0-8],135,136,137,138,139,150,151,157,158,159,182,183,187,188,198[0-9]
      */
    //    NSString * CM = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[2378])\\d)\\d{7}$";
    NSString * CM = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[2378]|9[8])\\d)\\d{7}$";
    /**
      * 中国联通:China Unicom
      * 130,131,132,152,155,156,176,185,186,166[0-9]
      */
    //    NSString * CU = @"^1(3[0-2]|5[256]|7[6]|8[56])\\d{8}$";
    NSString * CU = @"^1(3[0-2]|5[256]|7[6]|8[56]|6[6])\\d{8}$";
    /**
      * 中国电信:China Telecom
      * 133,1349,153,180,189,199[0-9]
      */
    //    NSString * CT = @"^1((33|53|8[09])[0-9]|349)\\d{7}$";
    NSString * CT = @"^1((33|53|8[09]|9[9])[0-9]|349)\\d{7}$";
    /**
     25 * 大陆地区固话及小灵通
     26 * 区号:010,020,021,022,023,024,025,027,028,029
     27 * 号码:七位或八位
     28 */
    // NSString * PHS = @"^0(10|2[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:self] == YES)
        || ([regextestcm evaluateWithObject:self] == YES)
        || ([regextestct evaluateWithObject:self] == YES)
        || ([regextestcu evaluateWithObject:self] == YES))
    {
        return YES;
    }
    else
    {
        return NO;
    }
    

    3)、正则表达式一些语法:

    // ^匹配输入字符串的开始位置       $ 匹配输入字符串的结尾位置。
    //   ( )    标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
    //    [xyz] 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
    //  \d    匹配一个数字字符等价于[0-9]      
    

    4)、学习正则表达式基础链接:
    http://www.runoob.com/regexp/regexp-syntax.html

    相关文章

      网友评论

        本文标题:2018-07-05 iOS 判断手机号码是否有效

        本文链接:https://www.haomeiwen.com/subject/jocpuftx.html