美文网首页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