1 #pragma mark 检验是否是手机号 2 +(BOOL)validatePhone:(NSString *)phone 3 { 4 NSString *phoneRegex = @"1[3|5|7|8|][0-9]{9}"; 5 NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex]; 6 return [phoneTest evaluateWithObject:phone]; 7 } 8 9 10 11 #pragma mark 检验是否是身份证号码 12 + (BOOL)IsIdentityCard:(NSString *)IDNumber 13 { 14 NSMutableArray *IDArray = [NSMutableArray array]; 15 // 遍历身份证字符串,存入数组中 16 for (int i = 0; i < 18; i++) { 17 NSRange range = NSMakeRange(i, 1); 18 NSString *subString = [IDNumber substringWithRange:range]; 19 [IDArray addObject:subString]; 20 } 21 // 系数数组 22 NSArray *coefficientArray = [NSArray arrayWithObjects:@"7", @"9", @"10", @"5", @"8", @"4", @"2", @"1", @"6", @"3", @"7", @"9", @"10", @"5", @"8", @"4", @"2", nil]; 23 // 余数数组 24 NSArray *remainderArray = [NSArray arrayWithObjects:@"1", @"0", @"X", @"9", @"8", @"7", @"6", @"5", @"4", @"3", @"2", nil]; 25 // 每一位身份证号码和对应系数相乘之后相加所得的和 26 int sum = 0; 27 for (int i = 0; i < 17; i++) { 28 int coefficient = [coefficientArray[i] intValue]; 29 int ID = [IDArray[i] intValue]; 30 sum += coefficient * ID; 31 } 32 // 这个和除以11的余数对应的数 33 NSString *str = remainderArray[(sum % 11)]; 34 // 身份证号码最后一位 35 NSString *string = [IDNumber substringFromIndex:17]; 36 // 如果这个数字和身份证最后一位相同,则符合国家标准,返回YES 37 if ([str isEqualToString:string]) { 38 return YES; 39 } else { 40 return NO; 41 } 42 }