首页 > 代码库 > iOS正則表達式(一)
iOS正則表達式(一)
什么是正則表達式?
正則表達式是对字符串操作的一种逻辑公式。
作用?
在iOS开发中我们通常使用正則表達式来匹配给定的字符串是否符合我们的业务逻辑,比方说用户注冊帐号仅仅能是手机号或者邮箱等。我们还能够使用正則表達式来从一段字符串其中截取我们须要的字符串,比方说网页源代码中我们须要截取某些个图片地址等。总得来说。在iOS开发中正則表達式的作用有两点:
1. 检測给定的字符串是否符合业务逻辑
2. 从目标字符串中获取我们想要的特定字符串
怎样在OC中使用正則表達式?
1.利用NSPredicate(谓词)匹配
NSString * targetString = @"13534341234";
NSString * regularExpression=@"^[1][3578]+\\d{9}";
NSPredicate *pre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regularExpression];
BOOL flag = [pre evaluateWithObject:targetString];
if (flag) {
NSLog(@"是手机号码");
}else{
NSLog(@"不是手机号码");
}
如上代码所看到的为简单的正則表達式在iOS中的使用方式,意思为:用户输入的字符串是否为手机号码。
其中 `targetString` 为用书输入字符串,`regularExpression` 为正則表達式语法,`NSPredicate`为OC中查询过滤类
2.利用rangeOfString:option:直接查找目标字符串
NSString *string = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.hao123.com"] encoding:4 error:nil];
NSRange range = [string rangeOfString:@"(<img.*?/>)" options:NSRegularExpressionSearch];
NSString *subStr = [string substringWithRange:range];
NSLog(@"subStr = %@",subStr);
如上代码就是从网页中过滤出我们的图片标签。删除结果为:`<img class="img-hook" src="http://s0.hao123img.com/res/img/logo/logonew1.png" width="210" height="60" />`
3.使用正則表達式类
NSString *string = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.hao123.com"] encoding:4 error:nil];
NSString *pattern = @"<img src=http://www.mamicode.com/(.*?)>";
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:NSRegularExpressionCaseInsensitive | NSRegularExpressionDotMatchesLineSeparators error:nil];
NSTextCheckingResult *checkResult = [regex firstMatchInString:string options:NSMatchingReportCompletion range:NSMakeRange(0, string.length)];
NSString *result = [string substringWithRange:[checkResult rangeAtIndex:0]];
NSLog(@"result = %@",result);
此代码和上面代码一样是找到网址中一个图片标签,那么要讲网址中全部的图片标签都找到,怎样写?
NSString *string = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.hao123.com"] encoding:4 error:nil];
NSString *pattern = @"<img src=http://www.mamicode.com/(.*?)>";
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:NSRegularExpressionCaseInsensitive | NSRegularExpressionDotMatchesLineSeparators error:nil];
NSArray *theArray = [regex matchesInString:string options:NSMatchingReportProgress range:NSMakeRange(0, string.length)];
for ( NSTextCheckingResult *ele in theArray) {
NSString *theLastString = [string substringWithRange:[ele rangeAtIndex:0]];
NSLog(@"theLastString = %@",theLastString);
}
那么问题来了。上面写的例如以下字符串是个什么鬼?
NSString * regularExpression=@"^[1][3578]+\\d{9}"
NSString *pattern = @"<img src=http://www.mamicode.com/(.*?)>";
对,这就是我们的正則表達式。那么正則表達式的语法又是怎样的呢?且听下回分解!
我的优酷空间,有视频教程哦,欢迎点击。
iOS正則表達式(一)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。