方法一、谓词(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 = @"1229436624@qq.com";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);
}