亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS正則表達式驗證手機號、郵箱、身份證號等

2020-07-26 03:01:59
字體:
來源:轉載
供稿:網友

本文實例為大家分享了常用的iOS正則表達式,供大家參考,具體內容如下

#import "NSString+RegexCategory.h"@implementation NSString (RegexCategory)#pragma mark - 正則相關- (BOOL)isValidateByRegex:(NSString *)regex{  NSPredicate *pre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];  return [pre evaluateWithObject:self];}#pragma mark -//手機號分服務商- (BOOL)isMobileNumberClassification{  /**   * 手機號碼   * 移動:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188,1705   * 聯通:130,131,132,152,155,156,185,186,1709   * 電信:133,1349,153,180,189,1700   */  //  NSString * MOBILE = @"^1((3//d|5[0-35-9]|8[025-9])//d|70[059])//d{7}$";//總況    /**   10     * 中國移動:China Mobile   11     * 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188,1705   12     */  NSString * CM = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[278])//d|705)//d{7}$";  /**   15     * 中國聯通:China Unicom   16     * 130,131,132,152,155,156,185,186,1709   17     */  NSString * CU = @"^1((3[0-2]|5[256]|8[56])//d|709)//d{7}$";  /**   20     * 中國電信:China Telecom   21     * 133,1349,153,180,189,1700   22     */  NSString * CT = @"^1((33|53|8[09])//d|349|700)//d{7}$";      /**   25     * 大陸地區固話及小靈通   26     * 區號:010,020,021,022,023,024,025,027,028,029   27     * 號碼:七位或八位   28     */  NSString * PHS = @"^0(10|2[0-5789]|//d{3})//d{7,8}$";      //  NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];    if (([self isValidateByRegex:CM])    || ([self isValidateByRegex:CU])    || ([self isValidateByRegex:CT])    || ([self isValidateByRegex:PHS]))  {    return YES;  }  else  {    return NO;  }}//手機號有效性- (BOOL)isMobileNumber{  /**   * 手機號以13、15、18、170開頭,8個 /d 數字字符   * 小靈通 區號:010,020,021,022,023,024,025,027,028,029 還有未設置的新區號xxx   */  NSString *mobileNoRegex = @"^1((3//d|5[0-35-9]|8[025-9])//d|70[059])//d{7}$";//除4以外的所有個位整數,不能使用[^4,//d]匹配,這里是否iOS Bug?  NSString *phsRegex =@"^0(10|2[0-57-9]|//d{3})//d{7,8}$";    BOOL ret = [self isValidateByRegex:mobileNoRegex];  BOOL ret1 = [self isValidateByRegex:phsRegex];    return (ret || ret1);}//郵箱- (BOOL)isEmailAddress{  NSString *emailRegex = @"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+//.[A-Za-z]{2,4}";  return [self isValidateByRegex:emailRegex];}//身份證號- (BOOL) simpleVerifyIdentityCardNum{  NSString *regex2 = @"^(//d{14}|//d{17})(//d|[xX])$";  return [self isValidateByRegex:regex2];}//車牌- (BOOL)isCarNumber{  //車牌號:湘K-DE829 香港車牌號碼:粵Z-J499港  NSString *carRegex = @"^[/u4e00-/u9fff]{1}[a-zA-Z]{1}[-][a-zA-Z_0-9]{4}[a-zA-Z_0-9_/u4e00-/u9fff]$";//其中/u4e00-/u9fa5表示unicode編碼中漢字已編碼部分,/u9fa5-/u9fff是保留部分,將來可能會添加  return [self isValidateByRegex:carRegex];}- (BOOL)isMacAddress{  NSString * macAddRegex = @"([A-Fa-f//d]{2}:){5}[A-Fa-f//d]{2}";  return [self isValidateByRegex:macAddRegex];}- (BOOL)isValidUrl{  NSString *regex = @"^((http)|(https))+:[^//s]+//.[^//s]*$";  return [self isValidateByRegex:regex];}- (BOOL)isValidChinese;{  NSString *chineseRegex = @"^[/u4e00-/u9fa5]+$";  return [self isValidateByRegex:chineseRegex];}- (BOOL)isValidPostalcode {  NSString *postalRegex = @"^[0-8]//d{5}(?!//d)$";  return [self isValidateByRegex:postalRegex];}- (BOOL)isValidTaxNo{  NSString *taxNoRegex = @"[0-9]//d{13}([0-9]|X)$";  return [self isValidateByRegex:taxNoRegex];}- (BOOL)isValidWithMinLenth:(NSInteger)minLenth          maxLenth:(NSInteger)maxLenth       containChinese:(BOOL)containChinese    firstCannotBeDigtal:(BOOL)firstCannotBeDigtal;{  // [/u4e00-/u9fa5A-Za-z0-9_]{4,20}  NSString *hanzi = containChinese ? @"/u4e00-/u9fa5" : @"";  NSString *first = firstCannotBeDigtal ? @"^[a-zA-Z_]" : @"";    NSString *regex = [NSString stringWithFormat:@"%@[%@A-Za-z0-9_]{%d,%d}", first, hanzi, (int)(minLenth-1), (int)(maxLenth-1)];  return [self isValidateByRegex:regex];}- (BOOL)isValidWithMinLenth:(NSInteger)minLenth          maxLenth:(NSInteger)maxLenth       containChinese:(BOOL)containChinese       containDigtal:(BOOL)containDigtal       containLetter:(BOOL)containLetter   containOtherCharacter:(NSString *)containOtherCharacter    firstCannotBeDigtal:(BOOL)firstCannotBeDigtal;{  NSString *hanzi = containChinese ? @"/u4e00-/u9fa5" : @"";  NSString *first = firstCannotBeDigtal ? @"^[a-zA-Z_]" : @"";  NSString *lengthRegex = [NSString stringWithFormat:@"(?=^.{%@,%@}$)", @(minLenth), @(maxLenth)];  NSString *digtalRegex = containDigtal ? @"(?=(.*//d.*){1})" : @"";  NSString *letterRegex = containLetter ? @"(?=(.*[a-zA-Z].*){1})" : @"";  NSString *characterRegex = [NSString stringWithFormat:@"(?:%@[%@A-Za-z0-9%@]+)", first, hanzi, containOtherCharacter ? containOtherCharacter : @""];  NSString *regex = [NSString stringWithFormat:@"%@%@%@%@", lengthRegex, digtalRegex, letterRegex, characterRegex];  return [self isValidateByRegex:regex];}#pragma mark - 算法相關//精確的身份證號碼有效性檢測+ (BOOL)accurateVerifyIDCardNumber:(NSString *)value {  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 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;      }    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;  }}/** 銀行卡號有效性問題Luhn算法 * 現行 16 位銀聯卡現行卡號開頭 6 位是 622126~622925 之間的,7 到 15 位是銀行自定義的, * 可能是發卡分行,發卡網點,發卡序號,第 16 位是校驗碼。 * 16 位卡號校驗位采用 Luhm 校驗方法計算: * 1,將未帶校驗位的 15 位卡號從右依次編號 1 到 15,位于奇數位號上的數字乘以 2 * 2,將奇位乘積的個十位全部相加,再加上所有偶數位上的數字 * 3,將加法和加上校驗位能被 10 整除。 */- (BOOL)bankCardluhmCheck{  NSString * lastNum = [[self substringFromIndex:(self.length-1)] copy];//取出最后一位  NSString * forwardNum = [[self substringToIndex:(self.length -1)] copy];//前15或18位    NSMutableArray * forwardArr = [[NSMutableArray alloc] initWithCapacity:0];  for (int i=0; i<forwardNum.length; i++) {    NSString * subStr = [forwardNum substringWithRange:NSMakeRange(i, 1)];    [forwardArr addObject:subStr];  }    NSMutableArray * forwardDescArr = [[NSMutableArray alloc] initWithCapacity:0];  for (int i = (int)(forwardArr.count-1); i> -1; i--) {//前15位或者前18位倒序存進數組    [forwardDescArr addObject:forwardArr[i]];  }    NSMutableArray * arrOddNum = [[NSMutableArray alloc] initWithCapacity:0];//奇數位*2的積 < 9  NSMutableArray * arrOddNum2 = [[NSMutableArray alloc] initWithCapacity:0];//奇數位*2的積 > 9  NSMutableArray * arrEvenNum = [[NSMutableArray alloc] initWithCapacity:0];//偶數位數組    for (int i=0; i< forwardDescArr.count; i++) {    NSInteger num = [forwardDescArr[i] intValue];    if (i%2) {//偶數位      [arrEvenNum addObject:[NSNumber numberWithInteger:num]];    }else{//奇數位      if (num * 2 < 9) {        [arrOddNum addObject:[NSNumber numberWithInteger:num * 2]];      }else{        NSInteger decadeNum = (num * 2) / 10;        NSInteger unitNum = (num * 2) % 10;        [arrOddNum2 addObject:[NSNumber numberWithInteger:unitNum]];        [arrOddNum2 addObject:[NSNumber numberWithInteger:decadeNum]];      }    }  }    __block NSInteger sumOddNumTotal = 0;  [arrOddNum enumerateObjectsUsingBlock:^(NSNumber * obj, NSUInteger idx, BOOL *stop) {    sumOddNumTotal += [obj integerValue];  }];    __block NSInteger sumOddNum2Total = 0;  [arrOddNum2 enumerateObjectsUsingBlock:^(NSNumber * obj, NSUInteger idx, BOOL *stop) {    sumOddNum2Total += [obj integerValue];  }];    __block NSInteger sumEvenNumTotal =0 ;  [arrEvenNum enumerateObjectsUsingBlock:^(NSNumber * obj, NSUInteger idx, BOOL *stop) {    sumEvenNumTotal += [obj integerValue];  }];    NSInteger lastNumber = [lastNum integerValue];    NSInteger luhmTotal = lastNumber + sumEvenNumTotal + sumOddNum2Total + sumOddNumTotal;    return (luhmTotal%10 ==0)?YES:NO;}- (BOOL)isIPAddress{  NSString *regex = [NSString stringWithFormat:@"^(//d{1,3})//.(//d{1,3})//.(//d{1,3})//.(//d{1,3})$"];  NSPredicate *pre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];  BOOL rc = [pre evaluateWithObject:self];    if (rc) {    NSArray *componds = [self componentsSeparatedByString:@","];        BOOL v = YES;    for (NSString *s in componds) {      if (s.integerValue > 255) {        v = NO;        break;      }    }        return v;  }    return NO;}@end

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
伊人伊成久久人综合网小说| 精品精品国产国产自在线| 精品国产依人香蕉在线精品| 国产不卡av在线免费观看| 亚洲男人第一网站| 亚洲国产成人精品久久| 国产精品一区二区久久精品| 欧美成人自拍视频| 日本久久久久久久久久久| 77777亚洲午夜久久多人| 国产精品久久网| 午夜精品一区二区三区视频免费看| 亚洲精品国产精品国自产观看浪潮| 日韩乱码在线视频| 欧美色欧美亚洲高清在线视频| 亚洲人成电影网站| 日韩在线免费高清视频| 欧美xxxx做受欧美.88| 国产精品视频99| 欧美在线精品免播放器视频| 欧美激情国产高清| 成人中文字幕+乱码+中文字幕| 成人h片在线播放免费网站| 一本大道亚洲视频| 在线精品国产欧美| 中文字幕综合在线| 精品久久久国产精品999| 57pao国产成人免费| 国产精品久久久av| 日韩成人在线免费观看| 中文字幕亚洲综合久久筱田步美| 色哟哟入口国产精品| 国产一区二区三区在线看| 成人h视频在线| 国产黑人绿帽在线第一区| 国产综合在线看| 亚洲精品国产品国语在线| 亚洲第一福利网| 亚洲色图日韩av| 国产精品久久久久91| 成人网在线观看| 欧美色道久久88综合亚洲精品| www.久久撸.com| 性欧美长视频免费观看不卡| 国产在线视频欧美| 精品久久久久久久久国产字幕| 波霸ol色综合久久| 91精品国产自产在线观看永久| 欧美日韩在线一区| 亚洲精品第一国产综合精品| 九九热精品在线| 亚洲欧美日韩一区二区在线| 亚洲日韩第一页| 亚洲性xxxx| 欧美日韩免费在线| 91九色蝌蚪国产| 国产亚洲视频中文字幕视频| 日韩精品视频在线观看免费| 久久久久亚洲精品成人网小说| 亚洲一区av在线播放| 国产精品jvid在线观看蜜臀| 久久久天堂国产精品女人| 欧美电影免费看| 久久久久久久久亚洲| 亚洲精品一区二区三区婷婷月| 91久久精品久久国产性色也91| 亚洲xxxx视频| 久久免费成人精品视频| 国产欧美日韩丝袜精品一区| 国产亚洲美女精品久久久| 国产精国产精品| 深夜成人在线观看| 在线精品高清中文字幕| 国产91网红主播在线观看| 欧美一级淫片videoshd| 国产精品久久久久久久久久99| 最近免费中文字幕视频2019| 韩国欧美亚洲国产| 欧美激情精品久久久久久黑人| 精品国产一区av| 精品久久久久久久中文字幕| 久久99久久99精品免观看粉嫩| 亚洲精品美女在线| 亚洲国产91色在线| 欧美刺激性大交免费视频| 欧美激情久久久久| 国产91精品网站| 国内揄拍国内精品少妇国语| 最近2019年好看中文字幕视频| 日本精品久久电影| 欧美日韩成人在线播放| 亚洲国产天堂久久综合网| 亚洲xxxx在线| 91av网站在线播放| 成人欧美在线观看| 亚洲一区二区三区四区视频| 91免费国产网站| 精品一区精品二区| 欧美性极品少妇精品网站| 欧美日韩国产综合新一区| 日韩a**站在线观看| 国产精品视频免费观看www| 曰本色欧美视频在线| 中文字幕少妇一区二区三区| 2020国产精品视频| 欧美综合第一页| 国产亚洲精品91在线| 色婷婷综合成人| 欧美高跟鞋交xxxxxhd| 91沈先生在线观看| 欧美在线激情网| 81精品国产乱码久久久久久| 久久影视免费观看| 亚洲一区二区中文字幕| 国产精品久久久久久久久| 亚洲成人av中文字幕| 欧美黄色片在线观看| 成人啪啪免费看| 亚洲欧美日韩精品久久亚洲区| 久久久极品av| 色综合91久久精品中文字幕| 日韩中文字在线| 国内精品视频一区| 91av视频在线播放| 国产精品电影在线观看| 色先锋资源久久综合5566| 最近免费中文字幕视频2019| 91av在线国产| 国产欧美精品一区二区| 亚洲国产99精品国自产| 国产精品99久久久久久白浆小说| 精品久久久久久电影| 久久天天躁狠狠躁夜夜av| 国产国语videosex另类| 亚洲欧美国产va在线影院| 亚洲欧美日韩国产中文| 亚洲黄色成人网| 国产精品日韩电影| 欧美高清电影在线看| 日韩电影免费在线观看| 精品国产乱码久久久久久虫虫漫画| 国产日韩欧美在线视频观看| 成人免费网站在线看| 国产精品久久久久9999| 美女精品久久久| 亚洲男人天堂网| 欧美成人精品不卡视频在线观看| 国产精品扒开腿做爽爽爽视频| 在线观看成人黄色| 久久国产精品久久久久久久久久| 国产成人啪精品视频免费网| 欧美视频在线观看免费| 国产成人综合精品| 精品国产一区二区三区四区在线观看| 午夜精品一区二区三区在线视| 亚洲天堂男人的天堂| 中文字幕最新精品| 国外成人免费在线播放| 精品人伦一区二区三区蜜桃免费| 欧美电影院免费观看| 精品国产91久久久久久| 中文字幕精品一区久久久久| 欧美日韩999| 亚洲国产欧美在线成人app|