NSString * regex = @"^[A-Za-z0-9]{9,15}$"; NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; BOOL isMatch = [pred evaluateWithObject:txtfldPhoneNumber.text];

Cocoa用NSPredicate描述查询的方式,原理类似于在数据库中进行查询

用BETWEEN,IN,BEGINWITH,ENDWITH,CONTAINS,LIKE这些谓词来构造 NSPredicate,必要的时候使用SELF直接对自己进行匹配

如对NSString中文匹配:

 <span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;">NSString *match=@"(^[\u4e00-\u9fa5]+$)";</span>
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF matches %@", match];
    BooL isChinese = [predicate evaluateWithObject:text];
  1. #import <Foundation/Foundation.h>
  2. @interface Human :NSObject
  3. {
  4. NSString *name;
  5. int age;
  6. Human *child;
  7. }
  8. @property (copy)NSString *name;
  9. @property int age;
  10. @end
  11. @implementation Human
  12. @synthesize name;
  13. @synthesize age;
  14. @end
  15. int main(int argc, const char * argv[])
  16. {
  17. @autoreleasepool {
  18. //利用kvc进行对象初始化
  19. Human *human = [[Human alloc]init];
  20. Human *child = [[Human alloc]init];
  21. [human setValue:@"holydancer" forKey:@"name"];
  22. [human setValue:[NSNumber numberWithInt:20] forKey:@"age"];
  23. [human setValue:child forKey:@"child"];
  24. [human setValue:[NSNumber numberWithInt:5] forKeyPath:@"child.age"];
  25. NSPredicate *predicate1=[NSPredicate predicateWithFormat:@"name=='holydancer'"];//创建谓词判断属性
  26. NSPredicate *predicate2=[NSPredicate predicateWithFormat:@"child.age==5"];//创建谓词判断属性的属性
  27. //此处在创建谓词时可以有好多种条件写法,比如大小比较,范围验证,甚至像数据库操作那样的like运算符,这里就不一一列举了
  28. BOOL tmp1=[predicate1 evaluateWithObject:human];//验证谓词是否成立,得到布尔返回值
  29. BOOL tmp2=[predicate2 evaluateWithObject:human];
  30. if (tmp1) {
  31. NSLog(@"human对象的name属性为'holydancer'");
  32. }
  33. if (tmp2) {
  34. NSLog(@"human对象的child属性的age为5");
  35. }
  36. }
  37. return 0;
  38. }
判断Array中是否包含某一规则的对象,并返回一个数组: NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS %@", regex]; 并调用:- (NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate; 方法即可。 获得一个数组中某些对象除外的数组: NSPredicate *notPredicate = [NSPredicate predicateWithFormat:@"NOT (SELF in %@)", arrayFilter2];且还是要调用- (NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate; 方法。 同样,如果我们想找出某个范围内的对象,创建如下Predicate (这里可以用到所有的比较操作符): NSPredicate *pre = [NSPredicate predicateWithFormat:@"self.*** < 5"]; 并调用:- (BOOL)evaluateWithObject:(id)object;方法。 在这里啰嗦一句,如果只是在数组中查找是否存在对象时用indexOfObject,如果不存在则返回为NSNotFound. 字符串替换:
  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);
截取字符串如下:
  1. //组装一个字符串,需要把里面的网址解析出来
  2. NSString *urlString=@ "<meta/><link/><title>1Q84 BOOK1</title></head><body>" ;
  3. //NSRegularExpression类里面调用表达的方法需要传递一个NSError的参数。下面定义一个
  4. NSError *error;
  5. //http+:[^\\s]* 这个表达式是检测一个网址的。(?<=title\>).*(?=</title)截取html文章中的<title></title>中内文字的正则表达式
  6. NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@ "(?<=title\\>).*(?=</title)" options: 0 error:&error];
  7. if (regex != nil) {
  8. NSTextCheckingResult *firstMatch=[regex firstMatchInString:urlString options: 0 range:NSMakeRange( 0 , [urlString length])];
  9. if (firstMatch) {
  10. NSRange resultRange = [firstMatch rangeAtIndex: 0 ];
  11. //从urlString当中截取数据
  12. NSString *result=[urlString substringWithRange:resultRange];
  13. //输出结果
  14. NSLog(@ "->%@<-" ,result);
  15. }
  16. }
匹配9-15个由字母/数字组成的字符串的正则表达式:    NSString * regex = @"^[A-Za-z0-9]{9,15}$";    NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];    BOOL isMatch = [pred evaluateWithO
正则表达式 在ios中应用 一、什么是 正则表达式 正则表达式 ,又称正规表示法,是对字符串操作的一种逻辑公式。 正则表达式 可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分。它可以迅速地用极 简单 的方式达到字符串的复杂控制。 二、 正则表达式 的语法   看一个过滤纯数字的例子 - (BOOL)validateNumber:( NS String *) text String { NS String * number=@"^[0-9]+$"; NS Predicate *numberPre = [ NS Predicate predicate WithFormat:@"SELF MA
1. 正则表达式 使用 单个字符串来描述、匹配一系列符合某个句法规则的字符串。通常被用来检索、替换那些符合某个模式的文本。 2. iOS中正则 使用 有三种( NS Predicate , rangeOf String :option:, NS RegularExpression),主要 使用 NS Predicate (谓词)匹配 例如 检测email是否合法: ————————————...
一般来说这种情况还是蛮多的,比如你从文件中读入了一个array1,然后想把程序中的一个array2中符合array1中内容的元素过滤出来。 正 常傻瓜一点就是两个for循环,一个一个进行比较,这样效率不高,而且代码也不好看。 其实一个循环或者无需循环就可以搞定了,那就需要用搞 NS Predicate 这个类了~膜拜此类~ 1)例子一,一个循环
NS String *format=[ NS String string WithFormat:@"SELF.nickName LIKE[cd] '*%@*'",searchText]; NS Predicate *perdicate=[ NS Predicate predicate WithFormat:format];     tableViewShowArray=[ta
NS String *email = @“nijino_saki@163.com”; NS String *regex = @[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}; NS Predicate * predicate = [ NS Predicate predicate WithFormat:@SELF MATCHES %@, regex]; BOOL isValid = [ predicate evaluat
///验证( string :验证的字符串) + (BOOL) string Validate:( NS String *) string { NS String *regular = @" 正则表达式 "; NS Predicate *pred = [ NS Predicate predicate WithFormat:@"SELF MATCHES %@...
NS Predicate 谓词的主要用于以下几个方面: (一)已知数组 NSArray 都有一个filteredArrayUsing Predicate 方法,可以根据指定的 NS Predicate 对象进行内容过滤。 (二) 除此之外Core Data框架中可以为查询请求 NS FetchRequest类的对象指定 NS PRedicate 对象作为查询条件。 (三) NS Predicate 类还可以 使用 matches 进...
// 实现 String 的endWith方法 public static boolean endsWith( String str, String end) { boolean flag = false; char[] e = end.to String ().toCharArray(); char[] s = str.to String ().toC...
iOS的模糊查询 使用 的是 NS Predicate 来实现的,如果你的模糊查询失效了,可能是因为你的 NS Predicate 语句有误。以下是一些常见的 NS Predicate 模糊查询语句: 1. 使用 LIKE操作符进行模糊匹配: NS Predicate * predicate = [ NS Predicate predicate WithFormat:@"name LIKE[c] '*searchKeyword*'"]; 其中,name表示要查询的属性名,[c]表示不区分大小写,searchKeyword表示你要查询的关键词。 2. 使用 CONTAI NS 操作符进行模糊匹配: NS Predicate * predicate = [ NS Predicate predicate WithFormat:@"name CONTAI NS [c] 'searchKeyword'"]; 其中,name表示要查询的属性名,[c]表示不区分大小写,searchKeyword表示你要查询的关键词。 如果你的模糊查询还是失效了,你可以检查一下你的查询语句是否正确,或者你可以提供更多的信息给我,我会尽力帮助你解决问题。
XCode 6 archive后export 失败 “Your account already has a valid iOS distribution certificate" 11187