iOS 身份证验证
- (void)onClickButton:(id) sender{
if (tmp_txt.text.length == || tmp_txt.text.length == ) {
NSString *emailRegex = @"^[0-9]*$";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
bool sfzNo = [emailTest evaluateWithObject:[tmp_txt.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]]; if (tmp_txt.text.length == ) {
if (!sfzNo) {
[self HUDShow:@"请输入正确的身份证号" delay:1.5];
return NO;
}
}
else if (tmp_txt.text.length == ) {
bool sfz18NO = [Global checkIdentityCardNo:tmp_txt.text];
if (!sfz18NO) {
[self HUDShow:@"请输入正确的身份证号" delay:1.5];
return NO;
}
}
}else{
[self HUDShow:@"请输入正确的身份证号" delay:1.5];
return NO;
}
} #pragma mark - 身份证识别
+(BOOL)checkIdentityCardNo:(NSString*)cardNo
{
if (cardNo.length != ) {
return NO;
}
NSArray* codeArray = [NSArray arrayWithObjects:@"",@"",@"",@"",@"",@"",@"",@"",@"",@"",@"",@"",@"",@"",@"",@"",@"", nil];
NSDictionary* checkCodeDic = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"",@"",@"X",@"",@"",@"",@"",@"",@"",@"",@"", nil] forKeys:[NSArray arrayWithObjects:@"",@"",@"",@"",@"",@"",@"",@"",@"",@"",@"", nil]]; NSScanner* scan = [NSScanner scannerWithString:[cardNo substringToIndex:]]; int val;
BOOL isNum = [scan scanInt:&val] && [scan isAtEnd];
if (!isNum) {
return NO;
}
int sumValue = ; for (int i =; i<; i++) {
sumValue+=[[cardNo substringWithRange:NSMakeRange(i , ) ] intValue]* [[codeArray objectAtIndex:i] intValue];
} NSString* strlast = [checkCodeDic objectForKey:[NSString stringWithFormat:@"%d",sumValue%]]; if ([strlast isEqualToString: [[cardNo substringWithRange:NSMakeRange(, )]uppercaseString]]) {
return YES;
}
return NO;
}
iOS 身份证验证的更多相关文章
- iOS身份证的正则验证
在ios项目的开发中可能很多地方都需要用到身份证校验,一般在开发的时候很多人都是直接百度去网上荡相关的正则表达式和校验代码,但是网上疯狂粘贴复制的校验代码本身也可能并不准确,可能会有风险,比如2013 ...
- 身份证验证JS代码
身份证验证JS程序function checkidcardfun(code) { var city = {11: "北京", 12: "天津", 13: &qu ...
- java身份证验证
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...
- jQuery身份证验证插件
jQuery身份证验证插件 /*! * jQuery isIDCard Plugin v1.0.0 * http://www.cnblogs.com/cssfirefly/p/5629561.html ...
- java对身份证验证及正则表达式解析
原文地址:http://www.cnblogs.com/zhongshengzhen/ java对身份证验证及正则表达式解析 package service; import java.text.Par ...
- iOS身份证号码识别
一.前言 身份证识别,又称OCR技术.OCR技术是光学字符识别的缩写,是通过扫描等光学输入方式将各种票据.报刊.书籍.文稿及其它印刷品的文字转化为图像信息,再利用文字识别技术将图像信息转化为可以使 ...
- Jsp注册页面身份证验证
<!--身份证验证 --><script type="text/javascript">function isCardNo(Idcardnumber) { ...
- C#实现中国身份证验证问题
C#中国身份证验证,包括省份验证和校验码验证,符合GB11643-1999标准... 今天写的 C#中国身份证验证,包括省份验证和校验码验证,符合GB11643-1999标准... 理论部分: 1 ...
- 【NumberValidators】大陆身份证验证
需要说明的是这里的大陆身份证识别并不是公安局联网的识别,而是按国标GB 11643进行的验证,所以其验证结果只能说符合国标规范,但不能保证该身份证一定真实存在,如果你实际需求是希望身份证一定真实存在, ...
随机推荐
- 去掉WordPress顶部工具条
WordPress为了方便管理员,或者登陆用户快速的从前台进入后台来管理网站,在WordPress网站顶部强制加入了一个工具条(admin bar),而且默认是对所有登陆用户都显示的,有时候看着挺烦心 ...
- x86实模式到保护模式 李忠 王晓波
x86实模式到保护模式 李忠 王晓波 第3到4章 各个进制间的转换省略 实验环境 编译器 nasm 虚拟机 virtual box 小程序 hexview 观察编译后的机器代码 fixvhd ...
- x86保护模式 二 分段管理机制
分段管理机制 段选择子和偏移地址的二维虚拟地址转换为一维的线性地址 一 段定义和虚拟地址到线性地址的转换 三个参数定义段:段基地址 段界限 和段属性 同时也是段描述符的结构 段基地址为 ...
- 学习系列 - 马拉车&扩展KMP
Manacher(马拉车)是一种求最长回文串的线性算法,复杂度O(n).网上对其介绍的资料已经挺多了的,请善用搜索引擎. 而扩展KMP说白了就是是求模式串和主串的每一个后缀的最长公共前缀[KMP更像是 ...
- 浅谈中途相遇攻击--meet-in-the-middle attack
貌似挖的坑也够多了....好多都没填,这篇最后会不会TJ还得看心情TUT 看过大白书的人应该都会发现一种神奇的算法:中途相遇法.(在第58页)这种算法将以空间换时间的思路运用到了极致,但事实上它在密码 ...
- Python脚本实现值更新事件赋值过程记录日志监控
#LogWatch 实现值更新事件赋值过程记录日志监控 clr.AddReference('System') clr.AddReference('Kingdee.BOS') clr.AddRefere ...
- Aragorn's Story(hdu3966)
题意:给一棵树,并给定各个点权的值,然后有3种操作: I C1 C2 K: 把C1与C2的路径上的所有点权值加上K D C1 C2 K:把C1与C2的路径上的所有点权值减去K Q C:查询节点编号为C ...
- Struts2标签-checkbox只读属性设置
Struts2标签-checkbox只读属性设置 在struts2的checkbox标签中,为实现只读效果,一般使用readonly="true"是达不到效果的,但设置disabl ...
- Laravel 视图中的url
<a href="{{ url('url') }}">url</a> <a href="{{ action('StudentControll ...
- Mongdb和Spring的整合
我自己的实现: 代码:https://github.com/littlecarzz/spring-data-mongodb 我使用的是spring-data-mongodb包,因为springboot ...