1. 程式人生 > >IOS最嚴格身份證號驗證

IOS最嚴格身份證號驗證

//身份證號  
+ (BOOL)CheckIsIdentityCard: (NSString *)identityCard  
{  
    //判斷是否為空  
    if (identityCard==nil||identityCard.length <= 0) {  
        return NO;  
    }  
    //判斷是否是18位,末尾是否是x  
    NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$";  
    NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];  
    if(![identityCardPredicate evaluateWithObject:identityCard]){  
        return NO;  
    }  
    //判斷生日是否合法  
    NSRange range = NSMakeRange(6,8);  
    NSString *datestr = [identityCard substringWithRange:range];  
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];  
    [formatter setDateFormat : @"yyyyMMdd"];  
    if([formatter dateFromString:datestr]==nil){  
        return NO;  
    }  
      
    //判斷校驗位  
    if(identityCard.length==18)  
    {  
        NSArray *idCardWi= @[ @"7", @"9", @"10", @"5", @"8", @"4", @"2", @"1", @"6", @"3", @"7", @"9", @"10", @"5", @"8", @"4", @"2" ]; //將前17位加權因子儲存在數組裡  
        NSArray * 
[email protected]
[ @"1", @"0", @"10", @"9", @"8", @"7", @"6", @"5", @"4", @"3", @"2" ]; //這是除以11後,可能產生的11位餘數、驗證碼,也儲存成陣列 int idCardWiSum=0; //用來儲存前17位各自乖以加權因子後的總和 for(int i=0;i<17;i++){ idCardWiSum+=[[identityCard substringWithRange:NSMakeRange(i,1)] intValue]*[idCardWi[i] intValue]; } int idCardMod=idCardWiSum%11;//計算出校驗碼所在陣列的位置 NSString *idCardLast=[identityCard substringWithRange:NSMakeRange(17,1)];//得到最後一位身份證號碼 //如果等於2,則說明校驗碼是10,身份證號碼最後一位應該是X if(idCardMod==2){ if([idCardLast isEqualToString:@"X"]||[idCardLast isEqualToString:@"x"]){ return YES; }else{ return NO; } }else{ //用計算出的驗證碼與最後一位身份證號碼匹配,如果一致,說明通過,否則是無效的身份證號碼 if([idCardLast intValue]==[idCardY[idCardMod] intValue]){ return YES; }else{ return NO; } } } return NO; }

相關推薦

IOS嚴格身份證驗證

//身份證號 + (BOOL)CheckIsIdentityCard: (NSString *)identityCard { //判斷是否為空 if (identityCard==nil||identityCard.length <=

js 身份證驗證

function isCardID(sId){         var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"內蒙古",21:"遼寧",22:"吉林",23:"黑龍江",31:"上海",32

tp5身份證驗證

身份證驗證最簡單的就是判斷長度了,當然這種非常簡單破瞭如果要更規則一點我們需要對身份證號碼進行一些按生成規則驗證了,下面整理了一些方法我們來看看。 方法放到全域性作用域application/common.php檔案 1.在 application 下的 common.php 中新增如下方

身份證驗證並獲取出生日期

private void txtSFZH_Validating(object sender, CancelEventArgs e)        {            if (txtSFZH.Text == null || txtSFZH.Text.ToString().

身份證驗證 銀行卡驗證

身份證號驗證 /* 審批系統的身份證驗證 * 身份證15位編碼規則:dddddd yymmdd xx p * dddddd:6位地區編碼 * yymmdd: 出生年(兩位年)月日,如:910215 * xx

身份證驗證正則表示式

一些要求使用者資訊比較嚴格的地方比如使用者註冊、登入的時候都需要驗證使用者的身份證是否合法,而通過這些驗證能大大的過濾掉很多水客,給你的系統帶來非常精準的使用者資訊。   很多時候我們都是通過一組正則表示式來判斷使用者輸入的身份證是否合法,那在用正則表示式判斷

常用正則表示式大全,手機 電話 郵箱 身份證 嚴格驗證 IP地址 網址 日期等,一般前臺js驗證,來這裡就夠了

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

JS身份證嚴格驗證,手機號驗證,中文驗證的正則

這些經常用到的驗證所以寫成函式好使用一些: // 身份證號驗證 var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"內蒙古",21:"遼寧",22:"吉

iOS驗證身份證的有效性(僅18位)

驗證身份證號的有效性(僅18位號) 概述 驗證身份證號的有效性。這裡僅支援18位身份證號的驗證,因為15位的身份證號碼基本上以及沒有了,筆者認為可以忽略。 通過正則表示式來判斷。附:正則表示式30分鐘入門教程。 下文中用到的正則表示式字串為"^[1-

EXCEL規範數據輸入教程-驗證身份證

excelEXCEL日常工作中經常會輸入身份證號碼,一不小心就可能出錯,今天大飛老師就分享這樣一個示例EXCEL規範數據輸入教程-驗證身份證號。 我們首先要保證在EXCEL中能正確輸入身份證號碼(PS:身份證號18位,直接輸入就會變成科學計數法形式1.235E+17),可以通過兩種方式。方式一:單引號+身份證

嚴格身份證校驗

國外 equal ppr ron 新疆 false elseif tor 河南 import java.util.Date; /** * 校驗身份證號碼是否有效 * * @author GaoH

php 驗證身份證

div als check subst 特殊 number cti turn for function validation_filter_id_card($id_card){ if(strlen($id_card)==18){ ret

嚴格的Java程式碼身份驗證

import java.util.Date;  /**  * 校驗身份證號碼是否有效  *  * @author HUXIAOCHAO  */ public class CheckCerti

身份證合法性驗證

//是否滿18歲function in18(birthYear,birthMonth,birthDay) { var now = new Date(); var year = now.getFullYear(); var month = now.getMonth() +1; var day = now.get

使用正則表達式驗證身份證

har info 通過 png 驗證身份證 正則 csharp ida () 實現效果: 關鍵知識: 實現代碼: private void button1_Click(object sender, EventArgs e) {

使用正則表示式驗證身份證

實現效果: 關鍵知識:   實現程式碼: private void button1_Click(object sender, EventArgs e) { if (IsValidate(textBox1.Text.ToStri

javascript 身份證號碼驗證函式(可辨真偽,支援15或18位身份證)測試誤差為0

話不多說,直接上程式碼,我不生產程式碼,我只是程式碼的搬運工。 //驗證身份證號方法 var test = function (idcard) { var Errors = new Array("驗證通過!", "身份證號碼位數不對!", "身份證號碼出生日期超出範圍或含有非法

js實現完美身份證有效性驗證+身份證與姓名匹配

/* 根據〖中華人民共和國國家標準 GB 11643-1999〗中有關公民身份號碼的規定,公民身份號碼是特徵組合碼,由十七位數字本體碼和一位數字校驗碼組成。排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。     地址碼錶示編碼物件

Java 驗證身份證的合法性(只利用校驗位)

import java.util.Scanner; public class E201_06_04_身份證驗證 { public static void main(String[] args)

身份證js驗證

1、先寫兩個js指令碼 IDValidator.js <script type="text/javascript"> function IDValidator() { var param = { error : { longNumber : '長數字