一、判斷是不是手機號碼html
//判斷手機號 + (BOOL)valueforPhoneNumber:(NSString *) textString { NSString* number=@"^1[3|4|5|7|8][0-9]\\d{8}$"; NSPredicate *numberPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",number]; return [numberPre evaluateWithObject:textString]; }
二、是不是字母或數字正則表達式
//判斷是不是數字或字母 + (BOOL)vvlueforIDname:(NSString *)textString { NSString* number=@"^[A-Za-z0-9]+$"; NSPredicate *numberPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",number]; return [numberPre evaluateWithObject:textString]; }
三、驗證身份證號碼lua
//身份證驗證 + (BOOL)verifyIDCardNumber:(NSString *)value { value = [value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; if ([value length] != 18) { return NO; } NSString *mmdd = @"(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8])))"; NSString *leapMmdd = @"0229"; NSString *year = @"(19|20)[0-9]{2}"; NSString *leapYear = @"(19|20)(0[48]|[2468][048]|[13579][26])"; NSString *yearMmdd = [NSString stringWithFormat:@"%@%@", year, mmdd]; NSString *leapyearMmdd = [NSString stringWithFormat:@"%@%@", leapYear, leapMmdd]; NSString *yyyyMmdd = [NSString stringWithFormat:@"((%@)|(%@)|(%@))", yearMmdd, leapyearMmdd, @"20000229"]; NSString *area = @"(1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5]|82|[7-9]1)[0-9]{4}"; NSString *regex = [NSString stringWithFormat:@"%@%@%@", area, yyyyMmdd , @"[0-9]{3}[0-9Xx]"]; NSPredicate *regexTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; if (![regexTest evaluateWithObject:value]) { return NO; } int summary = ([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; NSInteger remainder = summary % 11; NSString *checkBit = @""; NSString *checkString = @"10X98765432"; checkBit = [checkString substringWithRange:NSMakeRange(remainder,1)];// 判斷校驗位 return [checkBit isEqualToString:[[value substringWithRange:NSMakeRange(17,1)] uppercaseString]]; }
四、銀行卡號驗證(這個不屬於正則運算)spa
+ (BOOL) checkCardNo:(NSString*) cardNo { int oddsum = 0; //奇數求和 int evensum = 0; //偶數求和 int allsum = 0; int cardNoLength = (int)[cardNo length]; int lastNum = [[cardNo substringFromIndex:cardNoLength-1] intValue]; cardNo = [cardNo substringToIndex:cardNoLength - 1]; for (int i = cardNoLength -1 ; i>=1;i--) { NSString *tmpString = [cardNo substringWithRange:NSMakeRange(i-1, 1)]; int tmpVal = [tmpString intValue]; if (cardNoLength % 2 ==1 ) { if((i % 2) == 0){ tmpVal *= 2; if(tmpVal>=10) tmpVal -= 9; evensum += tmpVal; }else{ oddsum += tmpVal; } }else{ if((i % 2) == 1){ tmpVal *= 2; if(tmpVal>=10) tmpVal -= 9; evensum += tmpVal; }else{ oddsum += tmpVal; } } } allsum = oddsum + evensum; allsum += lastNum; if((allsum % 10) == 0) return YES; else return NO; }
注:正則表達式詳細介紹:http://www.admin10000.com/document/5944.htmlcode