验证身份证号和NSScanner的使用

原创 2016年06月01日 18:08:36

//验证身份证号是否正确(简单):

+ (BOOL)isIdentityCardRightful: (NSString *)idCard

{

    if (idCard.length <= 0) {

        return NO;

    }

    

    NSString * regex = @"^(\\d{14}|\\d{17})(\\d|[xX])$";

    NSPredicate * idCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];

    BOOL isMatch = [idCardPredicate evaluateWithObject:idCard];

    return isMatch;

}


// 身份证识别(全面)

+(BOOL)checkIdentityCardNo:(NSString*)cardNo

{

    if (cardNo.length != 18) {

        return  NO;

    }

    

    if (![self isIdentityCardRightful:cardNo]) {

        return NO;

    }

    

    NSString * cardNOUPStr = cardNo.uppercaseString;

    

    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:[cardNOUPStr substringToIndex:17]];

    

    int val;

    BOOL isNum = [scan scanInt:&val] && [scan isAtEnd];

    if (!isNum) {

        return NO;

    }

    int sumValue = 0;

    

    for (int i =0; i<17; i++) {

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

    }

    

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

    

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

        return YES;

    }

    return  NO;

}


版权声明:本文为博主原创文章,未经博主允许不得转载。

身份证号升位验证真伪小软件

  • 2012年11月15日 11:26
  • 46KB
  • 下载

easyui 自定义表单内容验证(汉字、字母、数字、邮箱、电话、邮编、身份证号等)

$.extend($.fn.validatebox.defaults.rules,   {      // 验证中文    CHS : {     validator :function(va...

身份证号验证

  • 2013年03月18日 09:10
  • 212KB
  • 下载

js实现完美身份证号有效性验证

最近需要对身份证合法性进行验证,实名验证是不指望了,不过原来的验证规则太过简单,只是简单的验证了身份证长度,现在业务需要加强下身份证验证规则,网上找到了不少资料,不过都不合偶的心意,无奈只好直接写一个...

PHP精确验证身份证号

  • 2013年06月18日 13:29
  • 2KB
  • 下载

js完美实现身份证号的有效验证

最近的前台验证比较多,自然要求也比较高,毕竟是网站上需要的一些东西。      之前做验证身份证号好像一直是验证位数够不够,如果够,则ok,这种简单的验证已经不符合现在的合法性要求了。因为身份证号是根...

验证身份证号合法性

  • 2012年04月10日 20:48
  • 3KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:验证身份证号和NSScanner的使用
举报原因:
原因补充:

(最多只允许输入30个字)