iOS 校验手机号以及身份证号码

 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 }

 

posted @ 2017-08-28 17:27  fanfan的博客  阅读(293)  评论(0编辑  收藏  举报