使用开源库 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 处理正则表达式的更多相关文章
- 在别的地方看的<<给程序员介绍一些C++开源库>>,记录给大家共同学习
首先说明这篇文章不是出自我手,大家共同学习. 引用地址:http://oss.org.cn/?action-viewnews-itemid-61998. C++开源库,欢迎补充. C++在“商业应用” ...
- [转贴]C++开源库
C++在“商业应用”方面,曾经是天下第一的开发语言,但这一 桂冠已经被java抢走多年.因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应 用.当Java横行天下之后,MS又突然发力,搞出C# ...
- C/C++ 开源库及示例代码
C/C++ 开源库及示例代码 Table of Contents 说明 1 综合性的库 2 数据结构 & 算法 2.1 容器 2.1.1 标准容器 2.1.2 Lockfree 的容器 2.1 ...
- 【Java&Android开源库代码剖析】のandroid-smart-image-view
Android应用开发已经进入到相对成熟的阶段,特别在国外,涌现出了各式各样的成熟稳定的开源库,供普通开发者使用.这种情况虽然极大加速了app开发的进程,但同时带来的问题是大多数普通开发者在使用这些开 ...
- 十大ios开发者喜爱的开源库
十大ios开发者喜爱的开源库 (转自博客园) 2014-08-17 14:07:58| 分类: objective-c | 标签:ios 开源库 |举报|字号 订阅 下载LOFTER我的照片书 ...
- C++开源库,欢迎补充。
转载自:http://blog.csdn.net/kobejayandy/article/details/8681741 C++在"商业应用"方面,曾经是天下第一的开发语言,但这一 ...
- ios很好的开源库
Tim9Liu9/TimLiu-iOS 自己总结的iOS.mac开源项目及库,持续更新.. 目录 UI 下拉刷新 模糊效果 AutoLayout 富文本 图表 表相关与Tabbar 隐藏与显示 HUD ...
- C++开源库,欢迎补充
C++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年.因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应 用.当Java横行天下之后,MS又突然发力,搞出C#语 ...
- 【踩坑速记】开源日历控件,顺便全面解析开源库打包发布到Bintray/Jcenter全过程(新),让开源更简单~
一.写在前面 自使用android studio开始,就被它独特的依赖方式:compile 'com.android.support:appcompat-v7:25.0.1'所深深吸引,自从有了它,麻 ...
随机推荐
- java 标准异常
一.Throwable这个Java类被用来表示任何可以作为异常被抛出的类.Throwable对象可分为两种类型(从Throwable继承而得到的类型): 1.) Error用来表示编译时和系统错误 2 ...
- SVN服务器搭建和使用-转载
SVN服务器搭建和使用(一)-转载 原文地址:http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2407610.html Subversion ...
- 图学ES6-4.字符串的扩展
- NET WebAPi之断点续传下载(下)
NET WebAPi之断点续传下载(下) 前言 上一篇我们穿插了C#的内容,本篇我们继续来讲讲webapi中断点续传的其他情况以及利用webclient来实现断点续传,至此关于webapi断点续传下载 ...
- 007.MySQL-Keepalived搭配脚本01
vim /etc/keepalived/check_MySQL.sh #!/bin/bash MYSQL=/usr/bin/mysql MYSQL_HOST=localhost MYSQL_USER= ...
- 001.iSCSI简介
一 iSCSI简介 Internet小型计算机系统接口是一个机遇TCP/IP的协议,用于通过IP网络仿真SCSI高性能本地存储总线,从而为远程存储设备提供数据传输和管理.作为SAN协议,iSCSI跨本 ...
- Java8 Lambda 之 Collection Stream
Lambda 之 Collection Stream Collection.stream() 测试实体类 class Demo { private Long id; private String na ...
- View 的滑动
View 的滑动 学习自 <Android开发艺术探索> 滑动漫谈 因为Android手机屏幕大小的原因,所以为了显式更多的信息,我们必须采用滚动的方式来处理,因为滚动就涉及到了滑动,有的 ...
- Educational Codeforces Round 14 D. Swaps in Permutation 并查集
D. Swaps in Permutation 题目连接: http://www.codeforces.com/contest/691/problem/D Description You are gi ...
- 使用 IntraWeb (6) - 页面模板: TIWLayoutMgrHTML、TIWTemplateProcessorHTML
IW 通过 TIWLayoutMgrHTML 和 TIWTemplateProcessorHTML 使用 HTML 模板. 所谓模板就是一个特殊 HTML 文件, 特殊之处是: 它里面会类似 {% I ...