正则表通常被用来检索、替换那些符合某个模式(规则)的文本,是对字符串的一种逻辑操作,可以用简单的方式达到字符串的复杂控制。
一、利用NSPredicate就是谓词来进行匹配,比如可以匹配一个邮箱是不是有效的
NSString *email = @“chenzhi_lin@163.com”;
NSString *regex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
BOOL isValid = [predicate evaluateWithObject:email];
if(isValid==YES)
{
NSLog(@"YES");
}
此处输出了YES,此处涉及到谓词详细见http://blog.csdn.net/zcmuczx/article/details/75007041
二、利用rangeOfString:option:直接查找
NSString *searchText = @"//Hello,Can you help me.";
NSRange range = [searchText rangeOfString:@"(?:[^,])*\\." options:NSRegularExpressionSearch];//搜索一个满足条件的字符串
if (range.location != NSNotFound) {
NSLog(@"%@", [searchText substringWithRange:range]);//从这个range返回的条件来查找字符串
}
输出can you help me.options中设定NSRegularExpressionSearch就是表示利用正则表达式匹配,会返回第一个匹配结果的位置。NSStringFromRange()方法,将一个NSRange返回一个NSString,options:NSBackwardsSearch从后往前搜索字符串。获取一个数组的一个子集:
NSRange range = NSMakeRange(0, 4);
NSArray *subArray = [dataArr subarrayWithRange:range];
这样就获得了这个数组中0开始的4个元素的子集。
三、使用正则表达式类
NSString *searchText = @"//Hello,can you help me.";
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(?:[^,])*\\." options:NSRegularExpressionCaseInsensitive error:&error];
NSTextCheckingResult *result = [regex firstMatchInString:searchText options:0 range:NSMakeRange(0, [searchText length])];
if (result) {
NSLog(@"%@\n", [searchText substringWithRange:result.range]);
}
输出也是can you help me使用系统的正则表达式类(NSRegularExpression)会返回匹配的多个结果。
第二种方法是只能放回第一个匹配的结果,而第三种方法能匹配多次,匹配多个结果
分享一篇文章http://www.jianshu.com/p/e7bb97218946和一个正则表达式的在线测试工具https://regex101.com/#javascript