iOS 身份证校验详解
来源:互联网 发布:springmvc 加载js 编辑:程序博客网 时间:2024/05/22 13:46
返回YES 就证明通过
+ (BOOL)checkIdCodeWith:(NSString *)string{ if (string.length == 0) { return NO; } if (string.length == 15 || string.length == 18) { } else { return NO; } // 身份代码 NSArray *areasArray =@[@"11",@"12", @"13",@"14", @"15",@"21", @"22",@"23", @"31",@"32", @"33",@"34", @"35",@"36", @"37",@"41", @"42",@"43", @"44",@"45", @"46",@"50", @"51",@"52", @"53",@"54", @"61",@"62", @"63",@"64", @"65",@"71", @"81",@"82", @"91"]; if (![areasArray containsObject:[string substringToIndex:2]]) { return NO; } NSRegularExpression *regularExpression; NSUInteger numberofMatch; NSInteger year = 0; switch (string.length) { case 15: year = [string substringWithRange:NSMakeRange(6, 2)].integerValue + 1900; if (year % 400 == 0 || (year % 100 != 0 && year % 4== 0)) { regularExpression = [[NSRegularExpression alloc] initWithPattern:@"^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$" options:NSRegularExpressionCaseInsensitive error:nil]; } else { regularExpression = [[NSRegularExpression alloc]initWithPattern:@"^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$"options:NSRegularExpressionCaseInsensitive error:nil]; } numberofMatch = [regularExpression numberOfMatchesInString:string options:NSMatchingReportProgress range:NSMakeRange(0, string.length)]; if (numberofMatch > 0) { return YES; } else { return NO; } break; case 18: year = [string substringWithRange:NSMakeRange(6,4)].intValue; if (year % 400 == 0 || (year % 100 != 0 && year % 4== 0)) { regularExpression = [[NSRegularExpression alloc] initWithPattern:@"^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$" options:NSRegularExpressionCaseInsensitive error:nil]; } else { regularExpression = [[NSRegularExpression alloc]initWithPattern:@"^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$" options:NSRegularExpressionCaseInsensitive error:nil]; } numberofMatch = [regularExpression numberOfMatchesInString:string options:NSMatchingReportProgress range:NSMakeRange(0, string.length)]; if (numberofMatch > 0) { int S = ([string substringWithRange:NSMakeRange(0,1)].intValue + [string substringWithRange:NSMakeRange(10,1)].intValue) *7 + ([string substringWithRange:NSMakeRange(1,1)].intValue + [string substringWithRange:NSMakeRange(11,1)].intValue) *9 + ([string substringWithRange:NSMakeRange(2,1)].intValue + [string substringWithRange:NSMakeRange(12,1)].intValue) *10 + ([string substringWithRange:NSMakeRange(3,1)].intValue + [string substringWithRange:NSMakeRange(13,1)].intValue) *5 + ([string substringWithRange:NSMakeRange(4,1)].intValue + [string substringWithRange:NSMakeRange(14,1)].intValue) *8 + ([string substringWithRange:NSMakeRange(5,1)].intValue + [string substringWithRange:NSMakeRange(15,1)].intValue) *4 + ([string substringWithRange:NSMakeRange(6,1)].intValue + [string substringWithRange:NSMakeRange(16,1)].intValue) *2 + [string substringWithRange:NSMakeRange(7,1)].intValue *1 + [string substringWithRange:NSMakeRange(8,1)].intValue *6 + [string substringWithRange:NSMakeRange(9,1)].intValue *3; int Y = S % 11; NSString *M = @"F"; NSString *JYM = @"10X98765432"; M = [JYM substringWithRange:NSMakeRange(Y,1)];// 判断校验位 if ([M isEqualToString:[string substringWithRange:NSMakeRange(17, 1)]]) { return YES; } else { return NO; } } else { return NO; } break; default: break; } return YES;}
0 0
- iOS 身份证校验详解
- iOS身份证校验详解
- iOS中身份证校验详解
- iOS 校验身份证是否合法
- IOS 身份证校验
- iOS 怎样做身份证校验
- iOS之身份证的正则校验
- iOS之身份证的正则校验
- iOS之身份证的正则校验
- 身份证校验
- 身份证校验
- 身份证校验
- 身份证校验
- 身份证校验
- 身份证校验
- 身份证校验
- 身份证校验
- 身份证校验
- ol2已知经纬度在图层上画圆
- IOS绘图探索
- Mysql的varchar排序按照数字顺序
- 关于Block的copy和循环引用的问题
- 在ChemDraw中如何使用ChemACX
- iOS 身份证校验详解
- 图灵机器人
- CAS实现SSO单点登录原理
- CSS美化超级链接和鼠标
- EF 更新 删除
- spring中使用@Async注解进行异步处理
- struts2的一些疑问:获取request对象
- UMeditor图片上传失败之jsp与.NET版本(转载+原创)
- autorelease 什么时候释放