ios-正则表达式使用的三种方法和正则表达式

正则表通常被用来检索、替换那些符合某个模式(规则)的文本,是对字符串的一种逻辑操作,可以用简单的方式达到字符串的复杂控制。

一、利用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

关于正则表达式可以参考 http://blog.csdn.net/xin__dong/article/details/46042593https://my.oschina.net/u/2340880/blog/403508
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值