iOS驗(yàn)證身份號(hào)碼是否合法

/**

  • 功能:驗(yàn)證身份證是否合法
  • 參數(shù):輸入的身份證號(hào)
    */
    -(BOOL)chk18PaperId:(NSString *) sPaperId{
    //判斷位數(shù)
    if ([sPaperId length] != 15 && [sPaperId length] != 18) {
    return NO;
    }
    NSString *carid = sPaperId;
    long lSumQT =0;
    //加權(quán)因子
    int R[] ={7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
    //校驗(yàn)碼
    unsigned char sChecker[11]={'1','0','X', '9', '8', '7', '6', '5', '4', '3', '2'};
    //將15位身份證號(hào)轉(zhuǎn)換成18位
    NSMutableString *mString = [NSMutableString stringWithString:sPaperId];
    if ([sPaperId length] == 15) {
    [mString insertString:@"19" atIndex:6];
    long p = 0;
    const charchar *pid = [mString UTF8String];
    for (int i=0; i<=16; i++)
    {
    p += (pid[i]-48) * R[i];
    }
    int o = p%11;
    NSString *string_content = [NSString stringWithFormat:@"%c",sChecker[o]];
    [mString insertString:string_content atIndex:[mString length]];
    carid = mString;
    }
    //判斷地區(qū)碼
    NSString * sProvince = [carid substringToIndex:2];
    if (![self areaCode:sProvince]) {
    return NO;
    }
    //判斷年月日是否有效
    //年份
    int strYear = [[self getStringWithRange:carid Value1:6 Value2:4] intValue];
    //月份
    int strMonth = [[self getStringWithRange:carid Value1:10 Value2:2] intValue];
    //日
    int strDay = [[self getStringWithRange:carid Value1:12 Value2:2] intValue];
    NSTimeZone *localZone = [NSTimeZone localTimeZone];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle];
    [dateFormatter setTimeStyle:NSDateFormatterNoStyle];
    [dateFormatter setTimeZone:localZone];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSDate *date=[dateFormatter dateFromString:[NSString stringWithFormat:@"%d-%d-%d 12:01:01",strYear,strMonth,strDay]];
    if (date == nil) {
    return NO;
    }
    const charchar *PaperId = [carid UTF8String];
    //檢驗(yàn)長(zhǎng)度
    if( 18 != strlen(PaperId)) return -1;
    //校驗(yàn)數(shù)字
    for (int i=0; i<18; i++)
    {
    if ( !isdigit(PaperId[i]) && !(('X' == PaperId[i] || 'x' == PaperId[i]) && 17 == i) )
    {
    return NO;
    }
    }
    //驗(yàn)證最末的校驗(yàn)碼
    for (int i=0; i<=16; i++)
    {
    lSumQT += (PaperId[i]-48) * R[i];
    }
    if (sChecker[lSumQT%11] != PaperId[17] )
    {
    return NO;
    }
    return YES;
    }

-(BOOL)areaCode:(NSString *)code{
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic setObject:@"北京" forKey:@"11"];
[dic setObject:@"天津" forKey:@"12"];
[dic setObject:@"河北" forKey:@"13"];
[dic setObject:@"山西" forKey:@"14"];
[dic setObject:@"內(nèi)蒙古" forKey:@"15"];
[dic setObject:@"遼寧" forKey:@"21"];
[dic setObject:@"吉林" forKey:@"22"];
[dic setObject:@"黑龍江" forKey:@"23"];
[dic setObject:@"上海" forKey:@"31"];
[dic setObject:@"江蘇" forKey:@"32"];
[dic setObject:@"浙江" forKey:@"33"];
[dic setObject:@"安徽" forKey:@"34"];
[dic setObject:@"福建" forKey:@"35"];
[dic setObject:@"江西" forKey:@"36"];
[dic setObject:@"山東" forKey:@"37"];
[dic setObject:@"河南" forKey:@"41"];
[dic setObject:@"湖北" forKey:@"42"];
[dic setObject:@"湖南" forKey:@"43"];
[dic setObject:@"廣東" forKey:@"44"];
[dic setObject:@"廣西" forKey:@"45"];
[dic setObject:@"海南" forKey:@"46"];
[dic setObject:@"重慶" forKey:@"50"];
[dic setObject:@"四川" forKey:@"51"];
[dic setObject:@"貴州" forKey:@"52"];
[dic setObject:@"云南" forKey:@"53"];
[dic setObject:@"西藏" forKey:@"54"];
[dic setObject:@"陜西" forKey:@"61"];
[dic setObject:@"甘肅" forKey:@"62"];
[dic setObject:@"青海" forKey:@"63"];
[dic setObject:@"寧夏" forKey:@"64"];
[dic setObject:@"新疆" forKey:@"65"];
[dic setObject:@"臺(tái)灣" forKey:@"71"];
[dic setObject:@"香港" forKey:@"81"];
[dic setObject:@"澳門" forKey:@"82"];
[dic setObject:@"國(guó)外" forKey:@"91"];
if ([dic objectForKey:code] == nil) {
return NO;
}
return YES;
}

  • (NSString *)getStringWithRange:(NSString *)carid Value1:(NSInteger )value1 Value2:(NSInteger )value2{
    return [carid substringWithRange:NSMakeRange(value1, value2)];
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子鸠姨,更是在濱河造成了極大的恐慌,老刑警劉巖誓琼,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡腹侣,警方通過(guò)查閱死者的電腦和手機(jī)叔收,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)傲隶,“玉大人饺律,你說(shuō)我怎么就攤上這事《逯辏” “怎么了复濒?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)乒省。 經(jīng)常有香客問(wèn)我巧颈,道長(zhǎng),這世上最難降的妖魔是什么袖扛? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任砸泛,我火速辦了婚禮,結(jié)果婚禮上攻锰,老公的妹妹穿的比我還像新娘晾嘶。我一直安慰自己,他們只是感情好娶吞,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著械姻,像睡著了一般妒蛇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上楷拳,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天绣夺,我揣著相機(jī)與錄音,去河邊找鬼欢揖。 笑死陶耍,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的她混。 我是一名探鬼主播烈钞,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼坤按!你這毒婦竟也來(lái)了毯欣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤臭脓,失蹤者是張志新(化名)和其女友劉穎酗钞,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡砚作,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年窘奏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片葫录。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡着裹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出压昼,到底是詐尸還是另有隱情求冷,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布窍霞,位于F島的核電站匠题,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏但金。R本人自食惡果不足惜韭山,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望冷溃。 院中可真熱鬧钱磅,春花似錦、人聲如沸似枕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)凿歼。三九已至褪迟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間答憔,已是汗流浹背味赃。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留虐拓,地道東北人心俗。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蓉驹,于是被迫代替她去往敵國(guó)和親城榛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容