美文网首页iOS奇淫巧技iOS从入门到放弃
iOS验证手机号,邮箱,身份证是否正确

iOS验证手机号,邮箱,身份证是否正确

作者: ZIM东东 | 来源:发表于2017-05-24 15:44 被阅读119次

    请先查看正则相关:
    http://www.jianshu.com/p/91f4d9f8c8f3

    正则验证手机号的有效性:

        NSString *mobileRegex = @"^(0|86|17951)?(13[0-9]|15[012356789]|17[0678]|18[0-9]|14[57])[0-9]{8}$";
        NSPredicate *pre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",mobileRegex];
        [pre evaluateWithObject:@"你输入的手机号码"];//此处返回的是BOOL类型,YES or NO;
    

    区分运营商号段的手机号有效性判断

    #pragma mark - 判断是否为电话号码
    - (BOOL)isPhoneNumber
    {
        /**
         * 移动号段正则表达式
         */
        NSString *CM_NUM = @"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\d{8}|(1705)\\d{7}$";
        /**
         * 联通号段正则表达式
         */
        NSString *CU_NUM = @"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))\\d{8}|(1709)\\d{7}$";
        /**
         * 电信号段正则表达式
         */
        NSString *CT_NUM = @"^((133)|(153)|(177)|(18[0,1,9]))\\d{8}$";
        NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM_NUM];
        BOOL isMatch1 = [pred1 evaluateWithObject:self];
        NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU_NUM];
        BOOL isMatch2 = [pred2 evaluateWithObject:self];
        NSPredicate *pred3 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT_NUM];
        BOOL isMatch3 = [pred3 evaluateWithObject:self];
        
        if (isMatch1 || isMatch2 || isMatch3) {
            return YES;
        }else{
            return NO;
        }
    }
    
    

    手机号段汇总:

    移动
    139、138、137、136、135、134、159、158、157、150、151、152、
    147(数据卡)、188、187、182、183、184、178 
    联通
    130、131、132、156、155、186、185、145(数据卡)、176 
    电信
    133、153、189、180、181、177、173(待放)
    
    前3位是网络识别号 ,  4-7位是地区编码 ,  8-11位是用户号码
    “正确”的读法:1XX-XXXX-XXXX,遇到三位 ,三位的读号码的,真的别扭
    

    验证邮箱的有效性:

     NSString *emailRegex = @"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
     NSPredicate *pre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",emailRegex];
     [pre evaluateWithObject:@"你输入的邮箱"];//此处返回的是BOOL类型,YES or NO;
    

    验证身份证号码的有效性:

     NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$";
     NSPredicate *pre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
     [pre evaluateWithObject:@"你输入的身份证号码"];//此处返回的是BOOL类型,YES or NO;
    

    相关文章

      网友评论

      本文标题:iOS验证手机号,邮箱,身份证是否正确

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