正则表达式的使用 iOS

方法一、谓词(NSPredicate)创建正则表达式

使用它来判断用户输入的字符串是否为合法的:

// 编写正则表达式:只能是数字或英文,或两者都存在
NSString *regex = @"^[a-z0-9A-Z]*$";
// 创建谓词对象并设定条件的表达式
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
// 判断的字符串
NSString *str = @"Hello100";
// 对字符串进行判断
if ([predicate evaluateWithObject:str]) { NSLog(@"Match");}

方法二、NSRegularExpression类创建正则表达式

在前言里也说过,我们可以使用正则来过滤并获取我们想要的特定部分,实现方法也很简单,可以用到NSRegularExpression这个类实现:

NSString *url = @"[email protected]";NSError *error;
// 创建NSRegularExpression对象并指定正则表达式
NSRegularExpression *regex = [NSRegularExpression        regularExpressionWithPattern:@"[^@]*\\."        options:0        error:&error];
if (!error) { // 如果没有错误 // 获取特特定字符串的范围 
NSTextCheckingResult *match = [regex firstMatchInString:url             options:0              range:NSMakeRange(0, [url length])]; 
if (match) {  // 截获特定的字符串  
NSString *result = [url substringWithRange:match.range]; 
NSLog(@"%@",result); 
}} else { // 如果有错误,则把错误打印出来 
NSLog(@"error - %@", error);
}

方法三、NSRegularExpression类之抓取多个结果

当一个字符串有多个符合特定规则的字符,我们可以分别获取到符合特定规则的字符:

NSString *regex = @"\\-\\d*\\.";
NSString *str = @"-34023242.-34203020.";
NSError *error;
NSRegularExpression *regular = [NSRegularExpression regularExpressionWithPattern:regex options:NSRegularExpressionCaseInsensitive error:&error];
// 对str字符串进行匹配
NSArray *matches = [regular matchesInString:str options:0 range:NSMakeRange(0, str.length)];
// 遍历匹配后的每一条记录
for (NSTextCheckingResult *match in matches) { 
NSRange range = [match range];
NSString *mStr = [str substringWithRange:range];
NSLog(@"%@", mStr);
}

你可能感兴趣的:(正则表达式的使用 iOS)