iOS 正则表达式的使用方式
Posted 陌上心
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 正则表达式的使用方式相关的知识,希望对你有一定的参考价值。
在 ios 开发中,有三种常用的正则表达式运用方式,为别为:NSPredicate、NSRegularExpression 和 字符串查找。三种方式各有优劣,可以通过不同需求选择不同的使用方式。
以邮箱校验为例:
1.NSPredicate(谓词)
谓词一般用于校验特定字符串的格式是否正确,使用方法很灵活。
- (BOOL)isEmailAddress:(NSString *)string
NSString *emailRegex = @"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]2,4";
NSPredicate *pre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",emailRegex];
return [pre evaluateWithObject:string];
2.NSRegularExpression
NSRegularExpression
是系统提供的用于正则校验的类,可以同时匹配多次,返回多个结果,例如过滤字符串中的特定格式。
- (NSArray *)matchEmailAddress:(NSString *)string
NSString *emailRegex = @"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]2,4";
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:emailRegex options:NSRegularExpressionCaseInsensitive error:&error];
if (!error)
NSArray *result = [regex matchesInString:aString options:0 range:NSMakeRange(0, [aString length])];
if (result.count > 0)
NSMutableArray *emails = [NSMutableArray array];
for (NSTextCheckingResult *textCheckingResult in result)
[emails addObject:[aString substringWithRange:textCheckingResult.range]];
return emails;
else
NSLog(@"Error: %@", error.localizedDescription);
return nil;
3.字符串查找
使用 NSString
的方法直接查找,其中 searchString
为正则表达式,mask
参数使用 NSRegularExpressionSearch
,返回第一个匹配结果的位置。
- (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask
- (BOOL)isEmailAddress:(NSString *)string
NSString *emailRegex = @"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]2,4";
NSRange range = [string rangeOfString:emailRegex options:NSRegularExpressionSearch];
if (range.length != NSNotFound)
return YES;
else
return NO;
以上是关于iOS 正则表达式的使用方式的主要内容,如果未能解决你的问题,请参考以下文章