使用开源库 Objective-C RegEx Categories 处理正则表达式
Objective-C RegEx Categories
https://github.com/bendytree/Objective-C-RegEx-Categories
使用说明:将 RegExCategories.h RegExCategories.m 文件拖入工程中引入头文件即可.
==========================================================================
//匹配电话号码(手机号以13, 15,18开头,八个 \d 数字字符)
BOOL isMatch = [@"15910514636" isMatch:RX(@"^((13[0-9])|(15[^4,\\D])|(18[0,0-9]))\\d{8}$")];
NSLog(@"%d", isMatch);
//匹配邮箱
BOOL isMatch = [@"705786230@qq.com" isMatch:RX(@"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}")];
NSLog(@"%d", isMatch);
//匹配用户名(用户名长度为6-20位之间,大小写字母或者数字均可)
BOOL isMatch = [@"705786230" isMatch:RX(@"^[A-Za-z0-9]{6,20}+$")];
NSLog(@"%d", isMatch);
//匹配身份证号
BOOL isMatch = [@"42120919831025587X" isMatch:RX(@"^(\\d{14}|\\d{17})(\\d|[xX])$")];
NSLog(@"%d", isMatch);
==========================================================================
//创建一个正则表达式
Rx* rx = RX(@"\\d");
Rx* rx = [Rx rx:@"\\d"];
Rx* rx = [Rx rx:@"\\d" ignoreCase:YES];
//判断字符串是否匹配
BOOL isMatch = [@"2345" isMatch:RX(@"^\\d+$")];
//获取匹配的字符串
NSString* age = [@"My dog is 3." firstMatch:RX(@"\\d+")];
//获取匹配的结果存储进数组
NSArray* words = [@"Hey pal" match:RX(@"\\w+")];
// words => @[ @"Hey", @"pal" ]
//能获取详细信息的匹配
RxMatch* match = [@"12.34, 56.78" firstMatchWithDetails:RX(@"\\d+([.]\\d+)")];
// match.value => @"12.34"
// match.range => NSRangeMake(0, 5);
// match.original => @"12.34, 56.78";
// match.groups => @[ RxMatchGroup, RxMatchGroup ];
//使用模板来替换匹配的字符串
NSString* result = [@"My dog is 12." replace:RX(@"\\d+") with:@"old"];
// result => @"My dog is old."
//使用block来替换
NSString* result = [RX(@"\\w+") replace:@"hi bud" withBlock:^(NSString* match){
return [NSString stringWithFormat:@"%i", match.length];
}];
// result => @"2 3"
//获取详细匹配信息的block方式
NSString* result = [RX(@"\\w+") replace:@"hi bud" withDetailsBlock:^(RxMatch* match){
return [NSString stringWithFormat:@"%i", match.value.length];
}];
// result => @"2 3"
==========================================================================
总结:正则表达式可用来按照一定模式来实现匹配字符串,替换字符串等等强大的功能,详细使用说明请参考该开源框架的使用示例.
其他:使用谓词来处理正则表达式示例
==========================================================================
NSString *email = @"YouXianMing@163.com";
NSString *regex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
BOOL isValid = [predicate evaluateWithObject:email];
==========================================================================
使用开源库 Objective-C RegEx Categories 处理正则表达式相关推荐
- SDWebImage开源库阅读分析(全)
汇总记录: 本文基于SDWebImage 4.2.3版本进行分析和整理(链接地址). 整体目录结构: SDWebImage |----SDWebImageCompat 处理不同平台(iOS.TV.OS ...
- C++开源库,欢迎补充。
C++在"商业应用"方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年.因为当今商业应用程序类型,已经从桌面应用迅速转移成 Web应 用.当Java横行天下之后,MS ...
- C++开源库详细介绍
C++在"商业应用"方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年.因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应 用.当Java横行天下之后,MS又 ...
- C/C++ 开源库及示例代码
C/C++ 开源库及示例代码 Table of Contents 说明 1 综合性的库 2 数据结构 & 算法 2.1 容器 2.1.1 标准容器 2.1.2 Lockfree 的容器 2.1 ...
- 十大ios开发者喜爱的开源库
十大ios开发者喜爱的开源库 (转自博客园) 2014-08-17 14:07:58| 分类: objective-c | 标签:ios 开源库 |举报|字号 订阅 下载LOFTER我的照片书 ...
- 在别的地方看的给程序员介绍一些C++开源库,记录给大家共同学习
在别的地方看的<<给程序员介绍一些C++开源库>>,记录给大家共同学习 首先说明这篇文章不是出自我手,大家共同学习. 引用地址:http://oss.org.cn/?actio ...
- 利用人工智能(Magpie开源库)给一段中文的文本内容进行分类打标签
当下人工智能是真心的火热呀,各种原来传统的业务也都在尝试用人工智能技术来处理,以此来节省人工成本,提高生产效率.既然有这么火的利器,那么我们就先来简单认识下什么是人工智能吧,人工智能是指利用语音识别. ...
- 开源库nothings/stb的介绍及使用(图像方面)
GitHub上有个开源的stb库,Star数已过万,地址为https://github.com/nothings/stb,为何叫stb,是用的作者名字的缩写Sean T. Barrett.此库仅包含头 ...
- base64开源库介绍及使用
网上有一些开源的base64编解码库的实现,下面介绍几个: cppcodec是一个仅包括头文件的C++11库,用于编解码RFC 4648中指定的base64, base64url, base32, b ...
最新文章
- Alpha 冲刺 (9/10)
- 股市投资大师的股市投资名言
- Spring-JdbcTemplate(注入到spring容器)-02
- 猜想:汇编指令push和pop对sp的处理顺序缘由
- iPhone 12需求强劲 苹果计划将iPhone产量提升30%
- 【第52期】游戏策划:应聘的误区你信了几个?
- 简单的音频转文字的转换方法
- Ubuntu压缩视频
- 什么是数据安全,为什么需要数据安全,怎么才能实现数据安全?
- 关于电阻的通流能力思考
- 关于C语言二级指针正确使用总结
- 国外免费(开放获取)学术资源大全
- C++ new失败处理
- 查看qq空间说说及评论,设置相关表结构
- oracle启用amm,使用ASMM和AMM时设置shared_pool
- Redis的Lock锁
- 数据结构与算法(Python版)二十二:递归可视化(谢尔宾斯基三角形)
- 文本相似度的计算-向量空间模型
- 知识扩展----快速阅读
- createjs之Easeljs
热门文章
- mysql数据库进阶_MYSQL数据库进阶操作
- java多线程线程池_Java多线程——线程池(ThreadPool)
- 远程桌面服务器怎么重启计算机,电脑怎么样远程重新启动
- java 反射技术实例,什么是反射技术?Java中最常用的反射技术实例
- android 百度地图闪退,Android使用百度地图出现闪退及定位时显示蓝屏问题的解决方法...
- python 逐行读取文件_Python fileinput模块:逐行读取多个文件
- sp导出法线_SP导出贴图导Redshift渲染效果不同的问题
- esxi vsphere的端口_硬干货!一张图弄清楚在ESXi下如何进行网络抓包
- java16进制取前几位_16位16进制数怎么取前8位和后8位
- 上海电力学院计算机组成与结构试卷,上海电力学院试卷及成绩管理办法