`
jaybril
  • 浏览: 50294 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

iOS 身份证号码的验证(15位身份证已经不再使用)

 
阅读更多
-(BOOL)checkIdCardNoFunc:(NSString *) IDCardNo{
   
    NSString *reg = @"/(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)/";
    NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", reg];
    BOOL isMatch = [pred evaluateWithObject:IDCardNo];
    if (isMatch) {
        NSString *cityNo=[IDCardNo  substringWithRange:NSMakeRange(0, 2)];
        if ([self checkCityNo:cityNo]) {
            NSString *birth= [IDCardNo substringWithRange:NSMakeRange(6,] ;
            NSDateFormatter *inputFormatter = [[[NSDateFormatter alloc] init] autorelease];
            [inputFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]];
            [inputFormatter setDateFormat:@"yyyyMMdd"];
            NSDate* inputDate = [inputFormatter dateFromString:birth];
           
            if (inputDate) {
                const int factor[] = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };//加权因子
                const int checktable[] = { 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 };//校验值对应表
                int checksum = 0;
               
                NSString *befor17=[IDCardNo substringWithRange:NSMakeRange(0,17)];
                for(int i=0; i<17; i++) {
                    int num=[[befor17  substringWithRange:NSMakeRange(i,1)]  intValue]*factor[i];
                    checksum+=num;
                }
                int yushu=checksum%11;
                if (yushu>10) {
                    return NO;
                }else{
                    int s=checktable[yushu];
                    NSString  *checkNoStr=[IDCardNo substringWithRange:NSMakeRange(17, 1)]  ;
                    if (checkNoStr) {
                        if ( [checkNoStr isEqualToString:@"X"]) {
                            if (s==2) {
                                return YES;
                            }
                            return NO;
                        }
                        else if([checkNoStr  intValue]==s){
                            return YES;
                        }
                    }
                }
            }
       
        }
    }
    return NO;
}

-(BOOL)checkCityNo:(NSString *)cityNo{
    NSArray *cityCode=[NSArray arrayWithObjects:@"11",@"12",@"13",@"14",@"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", nil];
    for (int i=0; i<[cityCode count]; i++) {
        if ([cityNo isEqual:cityCode[i]]) {
            return YES;
        }
    }
    return NO;

}
分享到:
评论

相关推荐

    ios-手机,邮箱,身份证号码验证.zip

    身份证号码分为15位和18位两种,其中18位身份证号码包含校验码。验证包括检查长度、每个数字的位置含义以及最后一位的校验码。可以使用特定算法来计算校验码并进行对比。例如,通过模97-11算法可以验证18位身份证...

    ios-身份证验证.zip

    一、身份证验证API 1. 第三方服务:许多第三方服务提供商如阿里云、腾讯云等提供了身份证OCR(光学字符识别)API,可以自动识别身份证上的文字信息,包括姓名、性别、出生日期、地址和身份证号码。调用这些API,...

    iOS身份证银行卡扫描

    总之,iOS身份证银行卡扫描是通过OCR技术实现的一项功能,它利用了iOS的Vision框架或者其他第三方服务,能够在短时间内准确识别身份证和银行卡上的信息。在开发过程中,不仅要关注技术实现,还要注重用户体验和数据...

    iOS判断身份证号码是否正确的方法

    * 验证身份证号码是否正确的方法 * * @param IDNumber 传进身份证号码字符串 * * @return 返回YES或NO表示该身份证号码是否符合国家标准 */ - (BOOL)isCorrect:(NSString *)IDNumber { NSMutableArray *...

    iOS身份证识别

    总之,iOS身份证识别结合React-Native实现了跨平台的解决方案,利用AVFoundation进行摄像头操作,CoreML进行图像识别,提供了一种高效、便捷的身份验证方式。在实际开发过程中,需要注意性能优化,如减少不必要的...

    swift-iOS中国二代身份证号扫描识别

    在iOS应用开发中,"swift-iOS中国二代身份证号扫描识别"是一个常见的需求,尤其是在涉及到用户身份验证或者个人信息录入的场景。此项目可能是一个利用Swift编程语言实现的库或者示例,用于帮助开发者高效准确地读取...

    ios 下的验证工具类

    验证身份证号码(18位)通常需要计算前17位的加权和,并模11得到的余数与第18位比较。以下是一个简单的身份证验证示例: ```swift func isValidIDCardNumber(_ idCard: String) -&gt; Bool { guard idCard.count ==...

    IOS 身份证、驾驶证识别

    在iOS开发中,涉及到身份验证或用户个人信息管理时,经常需要对身份证和驾驶证等证件进行自动识别。阿里云提供了高效且便捷的身份证和驾驶证识别服务,使得开发者可以通过API调用来实现这一功能。本文将深入探讨如何...

    森锐身份证 NFC识别Android+IOS源码+SDK

    森锐身份证NFC识别技术是针对移动设备(包括Android和iOS平台)开发的一种身份验证解决方案。这个技术利用了近场通信(NFC)技术来读取身份证中的芯片信息,为用户提供快速、安全的身份验证手段。NFC是一种短距离...

    森锐身份证识别Android+IOS源码+SDK.rar

    森锐身份证识别是一款专为Android和iOS平台设计的软件开发工具包(SDK),它提供了高效、准确的身份证信息读取和识别功能。该SDK适用于移动应用开发者,可以帮助他们快速集成身份证识别功能,提升用户体验,同时简化...

    iOS正则表达式验证手机号、邮箱、身份证号等

    iOS平台下的正则表达式应用广泛,尤其在进行字符串模式匹配时,例如验证手机号码、电子邮箱地址和身份证号码等场景。本文将详细解读如何使用正则表达式在iOS平台上实现这些信息的验证。 首先,来看手机号码的验证。...

    ios定制数字键盘

    在本例中,我们关注的是“ios定制数字键盘”,主要用于输入身份证号码。在iOS系统中,标准的键盘可能无法直接满足身份证号码输入的格式要求,因此开发者需要自定义键盘来实现这一功能。 首先,我们要理解身份证号码...

    iOS 中使用正则表达式判断身份证格式及银行卡号格式是否正确(推荐)

    在iOS开发中,使用正则表达式可以有效地验证身份证号码和银行卡号码的格式是否符合官方规定的标准。以下将详细介绍如何在iOS中使用正则表达式来判断身份证号码和银行卡号码的正确性。 ### 身份证号码验证 中国大陆...

    IOS正则表达式之验证密码身份证手机号

    `checkUserIdCard:`方法的正则表达式未给出完整,但通常身份证号码验证会考虑15位和18位两种情况,包括校验码。18位身份证号码的正则表达式通常会比较复杂,需要确保每个位置的数字在特定范围内,并且通过校验码...

    IOS开发之由身份证号码提取性别的实现代码

    在实际应用中,您可能需要进一步验证身份证号码的合法性,例如检查前6位代表的地区代码、校验码等。然而,上述代码仅展示了从身份证号码中提取性别的基本逻辑。在实际项目中,您可以将其集成到用户信息验证的流程中...

    ios-HZQRegexTestter(正则表达验证工具类,满足大众开发者验证需求,已封装且一句话验证。).zip

    正则表达式验证工具类,满足大众开发者验证需求,已封装且一句话即可验证,主要包括: /** * 1.... */ (BOOL)validateStrWithRange:... * 身份证号码验证 */ (BOOL)validateIDCardNumber:(NSString *)value;

Global site tag (gtag.js) - Google Analytics