定義(最經常使用到的方法):html
1 NSPredicate *ca = [NSPredicate predicateWithFormat:(NSString *), ...]; 正則表達式
(1)比較運算符>,<,==,>=,<=,!=
(6)正則表達式:MATCHES
例:NSString *regex = @"^A.+e$"; //以A開頭,e結尾
@"name MATCHES %@",regex數據庫
實際應用:
(1)對NSArray進行過濾 框架
1 NSArray *array = [[NSArray alloc]initWithObjects:@"beijing",@"shanghai",@"guangzou",@"wuhan", nil]; 2 NSString *string = @"ang"; 3 NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF CONTAINS %@",string]; 4 NSLog(@"%@",[array filteredArrayUsingPredicate:pred]);
(2)判斷字符串首字母是否爲字母:
1 2 NSString *regex = @"[A-Za-z]+"; 3 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; 4 5 if ([predicate evaluateWithObject:aString]) { 6 }
(3)字符串替換:
1 NSError* error = NULL; 2 NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:@"(encoding=\")[^\"]+(\")" 3 options:0 4 error:&error]; 5 NSString* sample = @"<xml encoding=\"abc\"></xml><xml encoding=\"def\"></xml><xml encoding=\"ttt\"></xml>"; 6 NSLog(@"Start:%@",sample); 7 NSString* result = [regex stringByReplacingMatchesInString:sample 8 options:0 9 range:NSMakeRange(0, sample.length) 10 withTemplate:@"$1utf-8$2"]; 11 NSLog(@"Result:%@", result);
(4)截取字符串以下:函數
1 //組裝一個字符串,須要把裏面的網址解析出來 2 NSString *urlString=@"<meta/><link/><title>1Q84 BOOK1</title></head><body>"; 3 4 //NSRegularExpression類裏面調用表達的方法須要傳遞一個NSError的參數。下面定義一個 5 NSError *error; 6 7 //http+:[^\\s]* 這個表達式是檢測一個網址的。(?<=title\>).*(?=</title)截取html文章中的<title></title>中內文字的正則表達式 8 NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(?<=title\\>).*(?=</title)" options:0 error:&error]; 9 10 if (regex != nil) { 11 NSTextCheckingResult *firstMatch=[regex firstMatchInString:urlString options:0 range:NSMakeRange(0, [urlString length])]; 12 13 if (firstMatch) { 14 NSRange resultRange = [firstMatch rangeAtIndex:0]; 15 16 //從urlString當中截取數據 17 NSString *result=[urlString substringWithRange:resultRange]; 18 //輸出結果 19 NSLog(@"->%@<-",result); 20 } 21 22 }
(5)判斷手機號碼,電話號碼函數 fetch
1 // 正則判斷手機號碼地址格式 2 - (BOOL)isMobileNumber:(NSString *)mobileNum 3 { 4 /** 5 * 手機號碼 6 * 移動:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188 7 * 聯通:130,131,132,152,155,156,185,186 8 * 電信:133,1349,153,180,189 9 */ 10 NSString * MOBILE = @"^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$"; 11 /** 12 10 * 中國移動:China Mobile 13 11 * 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188 14 12 */ 15 NSString * CM = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\\d)\\d{7}$"; 16 /** 17 15 * 中國聯通:China Unicom 18 16 * 130,131,132,152,155,156,185,186 19 17 */ 20 NSString * CU = @"^1(3[0-2]|5[256]|8[56])\\d{8}$"; 21 /** 22 20 * 中國電信:China Telecom 23 21 * 133,1349,153,180,189 24 22 */ 25 NSString * CT = @"^1((33|53|8[09])[0-9]|349)\\d{7}$"; 26 /** 27 25 * 大陸地區固話及小靈通 28 26 * 區號:010,020,021,022,023,024,025,027,028,029 29 27 * 號碼:七位或八位 30 28 */ 31 // NSString * PHS = @"^0(10|2[0-5789]|\\d{3})\\d{7,8}$"; 32 33 NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE]; 34 NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM]; 35 NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU]; 36 NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT]; 37 38 if (([regextestmobile evaluateWithObject:mobileNum] == YES) 39 || ([regextestcm evaluateWithObject:mobileNum] == YES) 40 || ([regextestct evaluateWithObject:mobileNum] == YES) 41 || ([regextestcu evaluateWithObject:mobileNum] == YES)) 42 { 43 if([regextestcm evaluateWithObject:mobileNum] == YES) { 44 NSLog(@"China Mobile"); 45 } else if([regextestct evaluateWithObject:mobileNum] == YES) { 46 NSLog(@"China Telecom"); 47 } else if ([regextestcu evaluateWithObject:mobileNum] == YES) { 48 NSLog(@"China Unicom"); 49 } else { 50 NSLog(@"Unknow"); 51 } 52 53 return YES; 54 } 55 else 56 { 57 return NO; 58 } 59 }
(6)郵箱驗證、電話號碼驗證:lua
1 //是不是有效的正則表達式 2 3 +(BOOL)isValidateRegularExpression:(NSString *)strDestination byExpression:(NSString *)strExpression 4 5 { 6 7 NSPredicate *predicate = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", strExpression]; 8 9 return [predicate evaluateWithObject:strDestination]; 10 11 } 12 13 //驗證email 14 +(BOOL)isValidateEmail:(NSString *)email { 15 16 NSString *strRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{1,5}"; 17 18 BOOL rt = [CommonTools isValidateRegularExpression:email byExpression:strRegex]; 19 20 return rt; 21 22 } 23 24 //驗證電話號碼 25 +(BOOL)isValidateTelNumber:(NSString *)number { 26 27 NSString *strRegex = @"[0-9]{1,20}"; 28 29 BOOL rt = [CommonTools isValidateRegularExpression:number byExpression:strRegex]; 30 31 return rt; 32 33 }
1 //日期在十天以內: 2 NSDate *endDate = [[NSDate date] retain]; 3 NSTimeInterval timeInterval= [endDate timeIntervalSinceReferenceDate]; 4 timeInterval -=3600*24*10; 5 NSDate *beginDate = [[NSDate dateWithTimeIntervalSinceReferenceDate:timeInterval] retain]; 6 //對coredata進行篩選(假設有fetchRequest) 7 NSPredicate *predicate_date = 8 [NSPredicate predicateWithFormat:@"date >= %@ AND date <= %@", beginDate,endDate]; 9 10 [fetchRequest setPredicate:predicate_date]; 11 //釋放retained的對象 12 [endDate release]; 13 [beginDate release];