验证身份证真实性
来源:互联网 发布:王者荣耀充值源码 编辑:程序博客网 时间:2024/05/22 16:42
前提:需要第三方正则表达式的类。
// 验证身份证格式- (BOOL)verifyIDcard:(NSString *)IDCardStr{ NSMutableArray *arrIDcard = [[NSMutableArray alloc]init]; // 身份证第一位到第十七位的系数 NSArray *arrCoefficient = [NSArray arrayWithObjects:@"7",@"9",@"10",@"5",@"8",@"4",@"2",@"1",@"6",@"3",@"7",@"9",@"10",@"5",@"8",@"4",@"2",@"1",nil]; // 先用正则表达式判断是否为字母和数字组成,并且判断是不是18位 if ([IDCardStr isMatchedByRegex:@"^[A-Za-z0-9]+$"] && [IDCardStr length] == 18) { NSRange range; range.length = 1; range.location = 0; // 将text中的身份证号码放入数组中 for (int i = 0; i < 18; i++) { range.location = i; [arrIDcard addObject:[IDCardStr substringWithRange:range]]; } // 把身份证号码前17位数字和系数相乘的结果相加。 int sum = 0; for (int i = 0; i < 17; i++) { sum+=[[arrIDcard objectAtIndex:i] intValue]*[[arrCoefficient objectAtIndex:i] intValue]; } int mod = sum % 11; // 用加出来和除以11得出余数 // 余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为1-0-X -9-8-7-6-5-4-3-2 if ([[arrIDcard objectAtIndex:17] isEqualToString:@"X"] || [[arrIDcard objectAtIndex:17] isEqualToString:@"x"]) { if (2 == mod) { NSLog(@"正确格式2"); return YES; } return NO; } else if ((12 - mod) == [[arrIDcard objectAtIndex:17] intValue]) { NSLog(@"正确格式3"); return YES; } else { NSLog(@"错误格式4"); return NO; } } else { NSLog(@"错误格式1"); return NO; }}
0 0
- 验证身份证真实性
- java验证公民身份证真实性
- 微信验证消息真实性
- 再来一发邮箱真实性验证
- Java验证邮箱有效性和真实性
- 身份证验证
- 身份证验证
- 身份证验证
- 身份证验证
- 身份证验证
- 验证身份证
- 身份证验证
- 身份证验证
- 身份证验证
- 身份证验证
- 身份证验证
- 身份证验证
- 身份证验证
- 周鸿祎的互联网方法论:用户至上与颠覆式创新
- Android开发:广播机制:Broadcast——自定义广播方法
- 拍卖程序员,100offer这样的程序员招聘方式靠谱吗
- html5远程连接php服务器相关
- 利用已知函数判断字符串是否为另一字符串的子串
- 验证身份证真实性
- 实现strlen函数
- 博客乔迁新居至CSDN
- 找程序员做老公的十大好处,该怎么解决
- http头中的host字段详解
- copy项目中的.c和.h文件
- ZenCart商城系统好用吗?欧美外贸服务器,防投诉主机推荐QQ2355427735 【美国UGG服务器】苹果互联-教你搭建php+mysql环境QQ2355427735 【美国抗投诉服务器】美国最专
- ?removeNode在Firefox下不能用.用removeChild代替实现
- 【索引】Volume 1. Elementary Problem Solving