/**
* 功能:身份證號校驗
*/
// ------確定
- (void)authClick {
if (![self checkData]) {
return;
};
// 寫驗證成功后的代碼
}
- (BOOL)checkData {
MBProgressHUD *mbhud = [[MBProgressHUD alloc] initWithView:self.view];
[self.view addSubview:mbhud];
mbhud.delegate = self;
mbhud.yOffset = - 50;
mbhud.mode = MBProgressHUDModeText;
// 姓名
if (_name.text.length == 0) {
mbhud.labelText = @"請輸入姓名";
[mbhud show:YES];
[mbhud hide:YES afterDelay:1];
return NO;
}
// 身份證
if (_identity.text.length == 0) {
mbhud.labelText = @"請輸入身份證號碼";
[mbhud show:YES];
[mbhud hide:YES afterDelay:1];
return NO;
}
if (_identity.text.length == 15 || _identity.text.length == 18) {
NSString *emailRegex = @"^[0-9]*$";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
bool sfzNo = [emailTest evaluateWithObject:[_identity.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];
if (_identity.text.length == 15) {
if (!sfzNo) {
mbhud.labelText = @"請輸入正確的身份證號";
[mbhud show:YES];
[mbhud hide:YES afterDelay:1];
return NO;
}
}
else if (_identity.text.length == 18) {
bool sfz18NO = [self checkIdentityCardNo:_identity.text];
if (!sfz18NO) {
mbhud.labelText = @"請輸入正確的身份證號";
[mbhud show:YES];
[mbhud hide:YES afterDelay:1];
return NO;
}
}
}else{
mbhud.labelText = @"請輸入正確的身份證號";
[mbhud show:YES];
[mbhud hide:YES afterDelay:1];
return NO;
}
return YES;
}
#pragma mark - 身份證識別
- (BOOL)checkIdentityCardNo:(NSString*)cardNo
{
if (cardNo.length != 18) {
return NO;
}
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:[cardNo 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+=[[cardNo substringWithRange:NSMakeRange(i , 1) ] intValue]* [[codeArray objectAtIndex:i] intValue];
}
NSString* strlast = [checkCodeDic objectForKey:[NSString stringWithFormat:@"%d",sumValue%11]];
if ([strlast isEqualToString: [[cardNo substringWithRange:NSMakeRange(17, 1)]uppercaseString]]) {
return YES;
}
return NO;
}
22羹幸、[ iOS ] 身份證號校驗
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來海渊,“玉大人茂腥,你說我怎么就攤上這事∏惺。” “怎么了最岗?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長朝捆。 經(jīng)常有香客問我般渡,道長,這世上最難降的妖魔是什么芙盘? 我笑而不...
- 正文 為了忘掉前任驯用,我火速辦了婚禮,結(jié)果婚禮上儒老,老公的妹妹穿的比我還像新娘蝴乔。我一直安慰自己,他們只是感情好驮樊,可當(dāng)我...
- 文/花漫 我一把揭開白布薇正。 她就那樣靜靜地躺著,像睡著了一般囚衔。 火紅的嫁衣襯著肌膚如雪挖腰。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼崖飘,長吁一口氣:“原來是場噩夢啊……” “哼稳衬!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起坐漏,我...
- 正文 年R本政府宣布,位于F島的核電站芝囤,受9級特大地震影響似炎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜悯姊,卻給世界環(huán)境...
- 文/蒙蒙 一羡藐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧悯许,春花似錦仆嗦、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至启上,卻和暖如春邢隧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背冈在。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 二代身份證除了位數(shù)和各位表達(dá)的含義有限制外,還有一個校驗和的問題侍郭,這篇文章就是來解決這個問題询吴。網(wǎng)絡(luò)上應(yīng)該有對應(yīng)的J...
- 前提 我們在平常注冊的時候都會校驗省份證,但是很少會遇到校驗其他證件類型的煮甥,今天正好結(jié)合ios調(diào)用js方法實現(xiàn)這一...
- http://blog.csdn.net/djl4104804/article/details/17114143 ...
- 研究了研究身份證掃描識別盗温,順便就看了看直接校驗身份證號是什么樣子的 1.簡單驗證一下身份證的格式是否滿足需求可使用...