iOS身份证号判断

来源:互联网 发布:淘宝如何好评返现 编辑:程序博客网 时间:2024/06/05 21:53

-(BOOL)validationTrue:(NSString *)idNum

{

    BOOL flag;

    NSString *regex2 =@"^(^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$)|(^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])((\\d{4})|\\d{3}[Xx])$)$";

    NSPredicate *identityCardPredicate = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@",regex2];

    flag = [identityCardPredicate evaluateWithObject:idNum];

    if(flag)

    {

        if(idNum.length==18)

        {

            

            NSArray * idCardWiArray =@[@"7",@"9", @"10",@"5", @"8",@"4", @"2",@"1", @"6",@"3", @"7",@"9", @"10",@"5", @"8",@"4", @"2"];

            

            

            NSArray * idCardYArray =@[@"1",@"0", @"10",@"9", @"8",@"7", @"6",@"5", @"4",@"3", @"2"];

            

            

            

            NSInteger idCardWiSum =0;

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

            {

                NSInteger subStrIndex = [[idNumsubstringWithRange:NSMakeRange(i,1)] integerValue];

                NSInteger idCardWiIndex = [[idCardWiArrayobjectAtIndex:i] integerValue];

                

                idCardWiSum+= subStrIndex * idCardWiIndex;

                

            }

            

            

            NSInteger idCardMod=idCardWiSum%11;

            

            

            NSString * idCardLast= [idNumsubstringWithRange:NSMakeRange(17,1)];

            

            

            if(idCardMod==2)

            {

                if([idCardLastisEqualToString:@"X"]||[idCardLastisEqualToString:@"x"])

                {

                    return flag;

                }else

                {

                    flag =  NO;

                    return flag;

                }

            }else

            {

                

                if([idCardLastisEqualToString: [idCardYArrayobjectAtIndex:idCardMod]])

                {

                    return flag;

                }

                else

                {

                    flag =  NO;

                    return flag;

                }

            }

        }

        else

        {

            flag =  NO;

            return flag;

        }

    }

    else

    {

        return flag;

    }

}


0 0
原创粉丝点击