国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

iOS 身份證正則表達式

2019-11-07 23:45:50
字體:
供稿:網(wǎng)友
/* 校驗身份證號碼 */+ (BOOL)validateIDCardNumber:(NSString *)value {    value = [value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];        long length =0;    if (!value) {        return NO;    }else {        length = 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 false;    }            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;            }                        break;        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;            }            break;        default:            return NO;            break;    }}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 司法| 连山| 清徐县| 珲春市| 横山县| 宣化县| 抚宁县| 张家港市| 岳西县| 通城县| 黑山县| 洛南县| 迁西县| 沂南县| 本溪市| 邻水| 江川县| 巴塘县| 沙坪坝区| 宜川县| 桂林市| 社旗县| 红河县| 庐江县| 吉水县| 体育| 玉林市| 旺苍县| 兰西县| 翁源县| 清水县| 大安市| 南通市| 上思县| 遂川县| 墨玉县| 平顶山市| 海安县| 高邮市| 明光市| 东宁县|