校验身份证是否正确

//验证身份证号码

+(BOOL)checkIdentityCardNo:(NSString*)cardNo

{

if(cardNo.length!=18)

{

returnNO;

  }

NSArray* codeArray = [NSArray arrayWithObjects:@"7",@"9",@"10",@"5",@"8",@"4",@"2",@"1",@"6",@"3",@"7",@"9",@"10",@"5",@"8",@"4",@"2",nil];NSDictionary* checkCodeDic = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"1",@"0",@"X",@"9",@"8",@"7",@"6",@"5",@"4",@"3",@"2",nil]  forKeys:[NSArray arrayWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",nil]];

NSScanner* scan = [NSScanner scannerWithString:[cardNo substringToIndex:17]];intval;

BOO LisNum = [scan scanInt:&val] && [scan isAtEnd];

if(!isNum)

{

return NO; 

  }

int sumValue =0;

for(inti =0; i<17; i++)

{      

sumValue+=[[cardNo substringWithRange:NSMakeRange(i ,1) ] intValue]* [[codeArray objectAtIndex:i] intValue];    }

NSString* strlast = [checkCodeDic objectForKey:[NSString stringWithFormat:@"%d",sumValue%11]];

if([strlast isEqualToString: [[cardNo substringWithRange:NSMakeRange(17,1)] uppercaseString]])

{

return YES;  

}

return NO;

}

文/静花寒(简书作者)

原文链接:http://www.jianshu.com/p/61d45e8d20ca

著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容