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];
-
#import <Foundation/Foundation.h>
-
@interface Human :NSObject
-
{
-
NSString *name;
-
int age;
-
Human *child;
-
-
}
-
@property (copy)NSString *name;
-
@property int age;
-
@end
-
@implementation Human
-
@synthesize name;
-
@synthesize age;
-
-
-
@end
-
int main(int argc, const char * argv[])
-
{
-
-
@autoreleasepool {
-
//利用kvc进行对象初始化
-
Human *human = [[Human alloc]init];
-
Human *child = [[Human alloc]init];
-
[human setValue:@"holydancer" forKey:@"name"];
-
[human setValue:[NSNumber numberWithInt:20] forKey:@"age"];
-
[human setValue:child forKey:@"child"];
-
[human setValue:[NSNumber numberWithInt:5] forKeyPath:@"child.age"];
-
-
NSPredicate *predicate1=[NSPredicate predicateWithFormat:@"name=='holydancer'"];//创建谓词判断属性
-
NSPredicate *predicate2=[NSPredicate predicateWithFormat:@"child.age==5"];//创建谓词判断属性的属性
-
//此处在创建谓词时可以有好多种条件写法,比如大小比较,范围验证,甚至像数据库操作那样的like运算符,这里就不一一列举了
-
-
BOOL tmp1=[predicate1 evaluateWithObject:human];//验证谓词是否成立,得到布尔返回值
-
BOOL tmp2=[predicate2 evaluateWithObject:human];
-
if (tmp1) {
-
NSLog(@"human对象的name属性为'holydancer'");
-
}
-
if (tmp2) {
-
NSLog(@"human对象的child属性的age为5");
-
-
}
-
-
}
-
return 0;
-
}
判断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.
字符串替换:
-
NSError* error = NULL;
-
NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:@
"(encoding=\")[^\"]+(\")"
-
options:
0
-
error:&error];
-
NSString* sample = @
"<xml encoding=\"abc\"></xml><xml encoding=\"def\"></xml><xml encoding=\"ttt\"></xml>"
;
-
NSLog(@
"Start:%@"
,sample);
-
NSString* result = [regex stringByReplacingMatchesInString:sample
-
options:
0
-
range:NSMakeRange(
0
, sample.length)
-
withTemplate:@
"$1utf-8$2"
];
-
NSLog(@
"Result:%@"
, result);
截取字符串如下:
-
//组装一个字符串,需要把里面的网址解析出来
-
NSString *urlString=@
"<meta/><link/><title>1Q84 BOOK1</title></head><body>"
;
-
-
//NSRegularExpression类里面调用表达的方法需要传递一个NSError的参数。下面定义一个
-
-
NSError *error;
-
-
//http+:[^\\s]* 这个表达式是检测一个网址的。(?<=title\>).*(?=</title)截取html文章中的<title></title>中内文字的正则表达式
-
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@
"(?<=title\\>).*(?=</title)"
options:
0
error:&error];
-
-
if (regex != nil) {
-
NSTextCheckingResult *firstMatch=[regex firstMatchInString:urlString options:
0
range:NSMakeRange(
0
, [urlString length])];
-
-
if (firstMatch) {
-
NSRange resultRange = [firstMatch rangeAtIndex:
0
];
-
-
//从urlString当中截取数据
-
NSString *result=[urlString substringWithRange:resultRange];
-
//输出结果
-
NSLog(@
"->%@<-"
,result);
-
}
-
-
}
匹配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