IOS:身份證格式驗證
//驗證身份證號是否有效
- (BOOL)validateIdentityCard: (NSString *)value
{
value = [value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
int length = value.length;
NSString *str = [value substringFromIndex:15];
if([str isEqualToString:@"000"])
{
length = 15 ;
}
// 省份程式碼
NSArray *areasArray [email protected][@"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 - 3)];
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[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[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)]]) {
return YES;// 檢測ID的校驗位
}else {
return NO;
}
}else {
return NO;
}
default:
return NO;
}
}
相關推薦
IOS:身份證格式驗證
//驗證身份證號是否有效 - (BOOL)validateIdentityCard: (NSString *)value { value = [value stringByTrimmingCharactersInSet:[NSCharacterSet w
編程樂趣:身份證號碼驗證的方法
adl substring track content else if ont article name out 隨著如今互聯網的發展,越來越多的註冊用戶的地方都用到了身份證。那麽對於輸入的身份證怎樣驗證呢?看以下的代碼,事實上非常easy。主要註意的是,眼下的身份證分
js非空驗證、身份證格式驗證、手機和電話格式驗證(前端框架用了miniui)
//法人代表身份證 var w_frsfz=mini.get("w_frsfz").getValue(); var reg = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d
PHP 身份證格式驗證
1.驗證身份證格式是否正確 /* * 身份證驗證 * @param string $id_card 身份證號碼 * @param boolean * */ function validation_filter_id_card($id_card) { if
C#實現的18位身份證格式驗證演算法
18位身份證標準在國家質量技術監督局於1999年7月1日實施的GB11643-1999《公民身份號碼》中做了明確的規定。 GB11643-1999《公民身份號碼》為GB11643-1989《社會保障號碼》的修訂版,其中指出將原標準名稱"社會保障號碼"更名為"公民身份
JS驗證身份證格式
在開發中,有時候會涉及到人物身份證登記,那麼怎麼驗證身份證格式是正確的,接下來附上一段JS程式碼驗證身份證格式: var aCity={11:"北京",12:"天津",13:"河北",14:"
IOS最嚴格身份證號驗證
//身份證號 + (BOOL)CheckIsIdentityCard: (NSString *)identityCard { //判斷是否為空 if (identityCard==nil||identityCard.length <=
IOS 遠端推送證書系列二:證書格式轉換(cer轉pem)
具體步驟如下: 1、通過雙擊.cer檔案將你的aps_development.cer和aps.cer引入Keychain中。 2、在Mac上啟動Keychain助手,然後分別匯出。 3、開啟終端,通過終端命令將這些檔案轉換為PEM格式: 3.1、測試證書 openssl
HTML中使用者名稱、身份證號、郵箱、出生日期等的格式驗證
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>表單驗證</title> //為了使頁面不是那麼
PHP驗證身份證格式
網際網路公司對身份證驗證的需求越來越多,然而普通的小公司是無法對接公安部門的身份認證系統的。幾乎都是在網上買一些大的網際網路公司的一些認證服務。即使是便宜一些的認證價格也達到了10萬次/萬元。也就是一角錢一次了,還是挺貴哈。所以為了減少公司的開支,我們在拿到使用者提交的身份證資訊去認證前應該自己先檢驗一下身份
iOS:仿寫探探App動畫
demo ron dem 布局實現 you image 轉場動畫 pan https 一、簡單介紹 探探動畫比較新穎,這也是它在眾多交友軟件中火熱的一個特色。實現這種動畫的方式可以有兩種方式實現: 1、使用轉場動畫實現 2、使用CollectionView自定義布局實現,
iOS:繪圖
需要 tar lock cnblogs 效果 pre cgp 技術 etop 1、UIBezierPath(貝塞爾曲線) 1-1)、在重寫 drawRect: 方法裏使用 使用不難,看 UIBezierPath.h 基本都會用,值得註意的是,顏色設置如下: [
iOS:CoreText的常用語法
ear 單位 [] 翻轉 1.2 iphone 書寫 attach direct CoreText的關鍵語法 一、坐標旋轉 -(void)drawRect:(CGRect)rect { //獲取上下文 CGContextRef ctx = UIGra
javascript身份證號碼驗證
返回 markdown user 問題 spa div mod 偶數 efi https://github.com/oxcow/id-number-validator 版權聲明: 關於《javascript身份證號碼驗證》的一切權利歸作者@Leeyee所有;
Email格式驗證
txt last pre with nbsp func e-mail ons rip <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <html&
iOS:詳細的正則表達式
bject for one 常用 一個 .cn 想要 bbb 公式 1、簡介: 在項目中,正則的使用是很普遍的,例如登錄賬號和密碼(手機號、郵箱等)。用到的方法就是謂詞對象過濾:NSPredicate。 2、什麽是正則表達式: 正則表達式,又稱正規表示法,是
iOS:UITableView相關
lar 對齊 options bject 技巧 pear uitable col rec UITableView用得較多,遇到的情況也較多,單獨記錄一篇。 一、零散的技巧 二、取cell 三、導航欄、TableView常見問題相關 一、零散的技巧 1、 cell的選
iOS開發-隨機圖片驗證碼
ble 字母 ins cnblogs point cgpoint back 第三方 text 在iOS項目中登錄註冊經常會用到隨機驗證碼,尤其是以圖片形式生成的驗證碼,可以減少使用第三方資源的代碼使用,只在本地生成並驗證即可,本文即介紹生成隨機圖片驗證碼的流程,驗證碼包括阿
Java實現身份證號碼驗證源碼分享
分隔 toc bst nbsp port birt random exti 一位數 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar;
15/18位身份證號碼驗證的正則表達式總結(詳細版)
校驗碼 輸入 詳細 wid width adding 方式 http 效率 前言 開發過程中,常常需要對一些輸入信息進行有效性驗證,使用正則表達式進行校驗是最簡單、效率最高的方式了,下面就來看看15/18位身份證號碼驗證的正則表達式吧。 介紹 xxxxxx yyyy MM