成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Objective-C實現(xiàn)身份證驗證的方法示例-創(chuàng)新互聯(lián)

前言

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:申請域名、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、張家川回族自治網(wǎng)站維護(hù)、網(wǎng)站推廣。

最近在一個二次開發(fā)的項目中看到了一段身份證驗證的OC代碼,雖然我一直討厭二次開發(fā)。因為這這個二次開發(fā)的項目太老,代碼太亂,毫無層次感。可是令人欣慰的是,我在里面發(fā)現(xiàn)了一段有用的代碼,感興趣的可以參考學(xué)習(xí)。

直接上代碼

- (BOOL)isValidIdCardNum
{
 NSString *value = [self copy];
 value = [value stringByReplacingOccurrencesOfString:@"X" withString:@"x"];
 value = [value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
 int length = 0;
 if (!value) {
  return NO;
 }else {
  length = (int)value.length;
  if (length != 15 && length !=18) {
   return NO;
  }
 }
 // 省份代碼
 NSArray *areasArray =@[@"11", @"12", @"13", @"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"];
 NSString *valueStart2 = [value substringToIndex:2];
 BOOL areaFlag = NO;
 for (NSString *areaCode in areasArray) {
  if ([areaCode isEqualToString:valueStart2]) {
   areaFlag = YES;
   break;
  }
 }
 if (!areaFlag) {
  return NO;
 }
 NSRegularExpression *regularExpression;
 NSUInteger numberofMatch;
 int year = 0;
 switch (length) {
  case 15:
   year = [value substringWithRange:NSMakeRange(6,2)].intValue +1900;
   if (year % 4 ==0 || (year % 100 ==0 && year % 4 ==0)) {
    regularExpression = [[NSRegularExpression alloc] initWithPattern:@"^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$"     options:NSRegularExpressionCaseInsensitive error:nil];// 測試出生日期的合法性
   }else {
    regularExpression = [[NSRegularExpression alloc] initWithPattern:@"^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$"   options:NSRegularExpressionCaseInsensitive error:nil];// 測試出生日期的合法性
   }
   numberofMatch = [regularExpression numberOfMatchesInString:value options:NSMatchingReportProgress range:NSMakeRange(0, value.length)];
   if(numberofMatch > 0) {
    return YES;
   }else {
    return NO;
   }
  case 18:
   year = [value substringWithRange:NSMakeRange(6,4)].intValue;
   if (year % 4 ==0 || (year % 100 ==0 && year % 4 ==0)) {
    regularExpression = [[NSRegularExpression alloc] initWithPattern:@"^[1-9][0-9]{5}19|20[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$"options:NSRegularExpressionCaseInsensitive error:nil];// 測試出生日期的合法性
    
   }else {
    regularExpression = [[NSRegularExpression alloc] initWithPattern:@"^[1-9][0-9]{5}19|20[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$"
                   options:NSRegularExpressionCaseInsensitive error:nil];// 測試出生日期的合法性
   }
   numberofMatch = [regularExpression numberOfMatchesInString:value options:NSMatchingReportProgress range:NSMakeRange(0, value.length)];
   if(numberofMatch > 0) {
    int S = ([value substringWithRange:NSMakeRange(0,1)].intValue + [value substringWithRange:NSMakeRange(10,1)].intValue) *7 + ([value substringWithRange:NSMakeRange(1,1)].intValue + [value substringWithRange:NSMakeRange(11,1)].intValue) *9 + ([value substringWithRange:NSMakeRange(2,1)].intValue + [value substringWithRange:NSMakeRange(12,1)].intValue) *10 + ([value substringWithRange:NSMakeRange(3,1)].intValue + [value substringWithRange:NSMakeRange(13,1)].intValue) *5 + ([value substringWithRange:NSMakeRange(4,1)].intValue + [value substringWithRange:NSMakeRange(14,1)].intValue) *8 + ([value substringWithRange:NSMakeRange(5,1)].intValue + [value substringWithRange:NSMakeRange(15,1)].intValue) *4 + ([value substringWithRange:NSMakeRange(6,1)].intValue + [value substringWithRange:NSMakeRange(16,1)].intValue) *2 + [value substringWithRange:NSMakeRange(7,1)].intValue *1 + [value substringWithRange:NSMakeRange(8,1)].intValue *6 + [value substringWithRange:NSMakeRange(9,1)].intValue *3;
    int Y = S % 11;
    NSString *M = @"F";
    NSString *JYM = @"10X98765432";
    M = [JYM substringWithRange:NSMakeRange(Y,1)]; // 判斷校驗位
    if ([M isEqualToString:[[value substringWithRange:NSMakeRange(17,1)] uppercaseString]]) {
     return YES;// 檢測ID的校驗位
    }else {
     return NO;
    }
   }else {
    return NO;
   }
   
  default:
   return NO;
 }
 return NO;
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站jinyejixie.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享題目:Objective-C實現(xiàn)身份證驗證的方法示例-創(chuàng)新互聯(lián)
標(biāo)題URL:http://jinyejixie.com/article48/ddshep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站制作、定制開發(fā)、服務(wù)器托管、虛擬主機(jī)、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
牙克石市| 伊春市| 平利县| 阳谷县| 荥阳市| 平谷区| 家居| 洛南县| 大渡口区| 汝南县| 汝南县| 阿瓦提县| 揭西县| 广平县| 佛冈县| 友谊县| 东安县| 抚顺市| 巴青县| 伊宁市| 阿拉善盟| 烟台市| 南雄市| 宕昌县| 浑源县| 阜新市| 阳高县| 探索| 中阳县| 张家口市| 邛崃市| 安化县| 开封市| 灵璧县| 平顺县| 加查县| 灵山县| 凤城市| 亚东县| 灌云县| 鄂温|