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

请先查看正则相关:
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验证手机号,邮箱,身份证是否正确)