-(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;
}
分享到:
相关推荐
身份证验证
手机,邮箱,身份证号码验证是否合法可用
* 验证身份证号码是否正确的方法 * * @param IDNumber 传进身份证号码字符串 * * @return 返回YES或NO表示该身份证号码是否符合国家标准 */ - (BOOL)isCorrect:(NSString *)IDNumber { NSMutableArray *...
身份证是国民的身份编号,编号是有一定规律的,这里介绍身份证验证规则比较详细。项目中经常会需要对身份证进行校验,我们先了解一些基本知识,然后分析代码 居民身份证号码,根据〖中华人民共和国国家标准 GB 11643...
// 1.NSString 为空(nil)的验证 // 2.邮箱验证 // 3.电话号验证 // 4.身份证验证
正则表达式验证工具类,满足大众开发者验证需求,已封装且一句话即可验证,主要包括: /** * 1.... */ (BOOL)validateStrWithRange:... * 身份证号码验证 */ (BOOL)validateIDCardNumber:(NSString *)value;
在项目中,我们在验证用户的输入,最简单的方法就是使用正则表达式了,ios系统也提供很方便的方法,让我们可以轻松的来验证用户名,密码,身份证好 ,手机号等; 下面附上我在项目中用到的正则表达式的验证方法, 由于比较...
主要介绍了iOS正则表达式验证手机号、邮箱、身份证号等信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本篇文章主要介绍了iOS中常见正则表达式验证方法,主要包括有身份证、手机号、军官证,有兴趣的可以了解一下。
主要对基础的正则判断类型进行封装,可以同时判断多个类型,方便使用,包括手机号、银行卡、身份证、邮箱以及其他基础验证,比如说在注册界面只需调用一次判断就可对账户、密码、验证码进行判断
最近在公司接手重构一个项目,发现之前的开发在验证格式这块写的太乱了,到处都有相关的验证代码,所以就有了这篇文章,供自己收藏也分享给有需要的朋友们参考借鉴,下面跟着小编来一起学习学习吧。
包含分类IBInspectable、模型、以及字典三种情况下对控件进行正则判断的封装、可以同时判断多个类型,方便使用,包括手机号、银行卡、身份证、邮箱以及其他基础验证,比如说在注册界面只需调用一次判断就可对账户、...
跨平台:OpenCV支持多种操作系统,包括但不限于Windows、Linux、macOS、Android和iOS,确保代码能够在不同平台上无缝运行。 丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像...
SDK for React Native :house: ... 。 以下是提供的完整功能列表: ...手机验证码登录 ...移动端 APP 社会化登录 目前支持的社会化登录有: ...注:从 react-native 0.60 版本开始,不再需要手动执行 react-
土耳其身份证(新):您可以在其中上传新的土耳其身份证。 土耳其身份证(旧):您可以在其中上传旧的土耳其身份证。 土耳其驾照:您可以在其中上载旧的土耳其驾照。 护照:您也可以上传护照以验证您的身份。2.上传...
swift语言实现的身份证号正则验证,在直播项目的实名认证模块使用过,很好用,如果swift项目中有需要实名认证的模块,在身份正是否正确的检验环节,这是你的不二选择。
开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验 下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS代码: /...