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 处理正则表达式的更多相关文章

  1. 在别的地方看的<<给程序员介绍一些C++开源库>>,记录给大家共同学习

    首先说明这篇文章不是出自我手,大家共同学习. 引用地址:http://oss.org.cn/?action-viewnews-itemid-61998. C++开源库,欢迎补充. C++在“商业应用” ...

  2. [转贴]C++开源库

    C++在“商业应用”方面,曾经是天下第一的开发语言,但这一 桂冠已经被java抢走多年.因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应 用.当Java横行天下之后,MS又突然发力,搞出C# ...

  3. C/C++ 开源库及示例代码

    C/C++ 开源库及示例代码 Table of Contents 说明 1 综合性的库 2 数据结构 & 算法 2.1 容器 2.1.1 标准容器 2.1.2 Lockfree 的容器 2.1 ...

  4. 【Java&Android开源库代码剖析】のandroid-smart-image-view

    Android应用开发已经进入到相对成熟的阶段,特别在国外,涌现出了各式各样的成熟稳定的开源库,供普通开发者使用.这种情况虽然极大加速了app开发的进程,但同时带来的问题是大多数普通开发者在使用这些开 ...

  5. 十大ios开发者喜爱的开源库

    十大ios开发者喜爱的开源库 (转自博客园) 2014-08-17 14:07:58|  分类: objective-c |  标签:ios  开源库  |举报|字号 订阅 下载LOFTER我的照片书 ...

  6. C++开源库,欢迎补充。

    转载自:http://blog.csdn.net/kobejayandy/article/details/8681741 C++在"商业应用"方面,曾经是天下第一的开发语言,但这一 ...

  7. ios很好的开源库

    Tim9Liu9/TimLiu-iOS 自己总结的iOS.mac开源项目及库,持续更新.. 目录 UI 下拉刷新 模糊效果 AutoLayout 富文本 图表 表相关与Tabbar 隐藏与显示 HUD ...

  8. C++开源库,欢迎补充

    C++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年.因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应 用.当Java横行天下之后,MS又突然发力,搞出C#语 ...

  9. 【踩坑速记】开源日历控件,顺便全面解析开源库打包发布到Bintray/Jcenter全过程(新),让开源更简单~

    一.写在前面 自使用android studio开始,就被它独特的依赖方式:compile 'com.android.support:appcompat-v7:25.0.1'所深深吸引,自从有了它,麻 ...

随机推荐

  1. 【LOJ】#2079. 「JSOI2016」轻重路径

    题解 写数据结构的时候我代码就会变得非常非常长 一看别人1.5K 2.3K 我6.3K-- orzzzzz 我们很容易想到离线倒着插入,然而,有个小锅叫如果size相同保持原来的重儿子不变 我们需要写 ...

  2. 黑马程序员_java基础笔记(15)...银行业务调度系统_编码思路及代码

    —————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流!—————————— 1,面试题目:银行业务调度系统 模拟实现银行业务调度系统逻辑,具体需求如下: 银行内 ...

  3. H5中canvas标签制作在线画板

    1.介绍 左键点击下移动开始画图.放开鼠标不在画图. 2.重要使用理论 query的使用: 鼠标的按下mousedown 鼠标的移动mousemove 鼠标的放开 mouseup 3.程序 <! ...

  4. fpm 制作rpm包

    使用fpm命令制作rpm包并安装 工作中有如下情况需要将文件打包rpm: 避免重复工作,将源码程序打包为rpm 使用yum发布项目,项目打包为rpm 将自己写好的程序打包为rpm,提供给用户下载 其他 ...

  5. 使用Maven搭建Struts2框架的开发环境

    一.创建基于Maven的Web项目

  6. C#泛型的抗变与协变

    C#泛型的抗变与协变 学习自 C#本质论6.0 https://www.cnblogs.com/pugang/archive/2011/11/09/2242380.html Overview 一直以来 ...

  7. 信号量Semaphore的使用

    一.概念 Semaphore是一个计数信号量,常用于限制可以访问某些资源(物理或逻辑的)线程数目. 一个信号量有且仅有3种操作,且它们全部是原子的:初始化.增加和减少 增加可以为一个进程解除阻塞: 减 ...

  8. 8.9 正睿暑期集训营 Day6

    目录 2018.8.9 正睿暑期集训营 Day6 A 萌新拆塔(状压DP) B 奇迹暖暖 C 风花雪月(DP) 考试代码 A B C 2018.8.9 正睿暑期集训营 Day6 时间:2.5h(实际) ...

  9. IEEEXtreme Practice Community Xtreme9.0 - Dictionary Strings

    Dictionary Strings 题目连接: https://www.hackerrank.com/contests/ieeextreme-challenges/challenges/dictio ...

  10. HDU 5810 Balls and Boxes 数学

    Balls and Boxes 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5810 Description Mr. Chopsticks is i ...