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 }