博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式在iOS开发中的应用
阅读量:6449 次
发布时间:2019-06-23

本文共 3167 字,大约阅读时间需要 10 分钟。

在代码开发过程中,我们经常需要用来校验邮箱、手机号等等,这个时候就需要用到正则表达式。在iOS开发中,能用来做正则校验的有两个 NSPredicateNSRegularExpression

NSPredicate

NSPredicate 能用来简单做正则校验,但是它的问题是存在校验不出来的情况。

//NSString+RegEx.h#import 
@interface NSString (RegEx)#pragma mark - NSPredicate- (BOOL)mars_matchedByPrdicateToRegEx:(NSString *)regEx;@end//NSString+RegEx.m#import "NSString+RegEx.h"@implementation NSString (RegEx)#pragma mark - NSPredicate- (BOOL)mars_matchedByPrdicateToRegEx:(NSString *)regEx{ NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regEx]; return [predicate evaluateWithObject:self];}@end

NSRegularExpression (推荐)

NSRegularExpression 相对于 NSPredicate 功能就强大的多了,这也是iOS正则校验的正统路子。

//NSString+RegEx.h#import 
@interface NSString (RegEx)#pragma mark - NSRegularExpression//校验是否匹配- (BOOL)mars_matchedToRegEx:(NSString *)regEx;//匹配到的第一个字符串- (NSString *)mars_firstMatchToRegEx:(NSString *)regEx;//所有匹配的字符串- (NSArray *)mars_matchesToRegEx:(NSString *)regEx;//替换匹配到的字符串- (NSString *)mars_stringByReplaceMatchesToRegEx:(NSString *)regEx replaceString:(NSString *)replaceString;@end//NSString+RegEx.m#import "NSString+RegEx.h"@implementation NSString (RegEx)#pragma mark - NSRegualrExpression//校验是否匹配- (BOOL)mars_matchedToRegEx:(NSString *)regEx{ NSError *error; NSRegularExpression *regularExpression = [NSRegularExpression regularExpressionWithPattern:regEx options:NSRegularExpressionCaseInsensitive error:&error]; NSUInteger number = [regularExpression numberOfMatchesInString:self options:0 range:NSMakeRange(0, self.length)]; return number != 0;}//匹配到的第一个字符串- (NSString *)mars_firstMatchToRegEx:(NSString *)regEx{ NSError *error; NSRegularExpression *regularExpression = [NSRegularExpression regularExpressionWithPattern:regEx options:NSRegularExpressionCaseInsensitive error:&error]; NSTextCheckingResult *firstMatch = [regularExpression firstMatchInString:self options:0 range:NSMakeRange(0, self.length)]; if (firstMatch) { NSString *result = [self substringWithRange:firstMatch.range]; return result; } return nil;}//所有匹配的字符串- (NSArray *)mars_matchesToRegEx:(NSString *)regEx{ NSError *error; NSRegularExpression *regularExpression = [NSRegularExpression regularExpressionWithPattern:regEx options:NSRegularExpressionCaseInsensitive error:&error]; NSArray *matchArray = [regularExpression matchesInString:self options:0 range:NSMakeRange(0, self.length)]; NSMutableArray *array = [NSMutableArray array]; if (matchArray.count != 0) { for (NSTextCheckingResult *match in matchArray) { NSString *result = [self substringWithRange:match.range]; [array addObject:result]; } } return array;}//替换匹配到的字符串- (NSString *)mars_stringByReplaceMatchesToRegEx:(NSString *)regEx replaceString:(NSString *)replaceString{ NSError *error; NSRegularExpression *regularExpression = [NSRegularExpression regularExpressionWithPattern:regEx options:NSRegularExpressionCaseInsensitive error:&error]; return [regularExpression stringByReplacingMatchesInString:self options:0 range:NSMakeRange(0, self.length) withTemplate:replaceString];}@end

转载地址:http://qelwo.baihongyu.com/

你可能感兴趣的文章
《UG NX8.0中文版完全自学手册》一导读
查看>>
Windows和Linux端rsync推拉同步时中文乱码解决方法
查看>>
《Spark核心技术与高级应用》——1.3节本章小结
查看>>
解决军哥lnmp一键包报错pycurl.so
查看>>
Google 搜索结果正式 AMP 化
查看>>
《树莓派Python编程入门与实战》——第2章 认识Raspbian Linux发行版 2.1 了解Linux...
查看>>
阿里感悟 (十七)- 计划和规划能力
查看>>
《Java并发编程从入门到精通》显示锁Lock和ReentrantLock
查看>>
《Servlet、JSP和Spring MVC初学指南》——1.12 小结
查看>>
《精通软件性能测试与LoadRunner最佳实战》—第2章2.5节 测试脚本编写
查看>>
《解读NoSQL》——第1章 NoSQL:明智的选择
查看>>
算力即权力
查看>>
《Nmap渗透测试指南》—第6章6.8节目标主机随机排序
查看>>
《Unity 3.x游戏开发实例》——2.8节百分之一的灵感
查看>>
阿里云前端周刊 - 往期回顾(1-3)
查看>>
《Axure RP8 网站和APP原型制作 从入门到精通》一第1章 设计过程概述1.1 设计过程...
查看>>
《嵌入式Linux应用开发完全手册》——1.2 基于ARM处理器的嵌入式Linux系统
查看>>
“数”成金|大数据的正确打开及使用方法
查看>>
《精通Unreal游戏引擎》一导读
查看>>
如何把老旧笔记本变成一部 Chromebook
查看>>