首页 > 代码库 > iOS 正则表达式
iOS 正则表达式
1. iOS中使用正则表达式,用 NSRegularExpression 这个类
实例化方法:
NSRegularExpression *regex = [[NSRegularExpression alloc]initWithPattern:@"在引号内写正则表达式" options:NSRegularExpressionCaseInsensitive error:nil];
NSRegularExpressionCaseInsensitive 是指大小写敏感
1.1 使用正则表达式校验手机号
示例代码:
1 // 假设手机号只以13\15\18开头 2 NSString *str = @"13510188591"; 3 4 // 实例化正则表达式对象 5 NSRegularExpression *regex = [[NSRegularExpression alloc]initWithPattern:@"1[358][0-9]{9}" options:NSRegularExpressionCaseInsensitive error:nil]; 6 // 匹配 7 NSArray *matches = [regex matchesInString:str options:NSMatchingReportCompletion range:NSMakeRange(0, str.length)]; 8 9 // 判断,10 if (matches.count) {11 NSLog(@"匹配到了");12 // 正则表达式对位数不做精确控制,假如提供100位的数字,上面的代码还是会认为匹配到了,所以需要用下面代码完善手机号匹配13 if (str.length == 11) {14 NSLog(@"并且是手机号!");15 }16 17 }else{18 NSLog(@"没匹配到");19 }
1.2 其他常用方法
- (NSTextCheckingResult *)firstMatchInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range;
- (NSUInteger)numberOfMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range;
2.好用的第3方框架 RegexKitLite
该库依赖于 libicucore.dylib.
如果是ARC项目,还得加上 -fno-objc-arc
示例代码:
1 // 假设手机号只以13\15\18开头2 NSString *str = @"135101885910000";3 NSString *regex = @"1[358][0-9]{9}";4 [str enumerateStringsMatchedByRegex:regex usingBlock:^(NSInteger captureCount, NSString *const __unsafe_unretained *capturedStrings, const NSRange *capturedRanges, volatile BOOL *const stop) {5 NSLog(@"匹配到的数量:%ld",captureCount);6 NSLog(@"匹配到的字符串:%@",*capturedStrings);7 NSLog(@"匹配到的Range:%@",NSStringFromRange(*capturedRanges));8 9 }];
另一种常见用法,打印 分割字符串
1 // 假设手机号只以13\15\18开头2 NSString *str = @"13512345678ABCD18912345678-15812345678";3 NSString *regex = @"1[358][0-9]{9}";4 5 [str enumerateStringsSeparatedByRegex:regex usingBlock:^(NSInteger captureCount, NSString *const __unsafe_unretained *capturedStrings, const NSRange *capturedRanges, volatile BOOL *const stop) {6 NSLog(@"匹配到的数量:%ld",captureCount);7 NSLog(@"匹配到的字符串:%@",*capturedStrings);8 NSLog(@"-----匹配到的Range:%@",NSStringFromRange(*capturedRanges));9 }];
输出结果:
匹配到的数量:1
匹配到的字符串:
-----匹配到的Range:{0, 0}
匹配到的数量:1
匹配到的字符串:ABCD
-----匹配到的Range:{11, 4}
匹配到的数量:1
匹配到的字符串:-
-----匹配到的Range:{26, 1}
iOS 正则表达式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。