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. SDWebImage开源库阅读分析(全)

    汇总记录: 本文基于SDWebImage 4.2.3版本进行分析和整理(链接地址). 整体目录结构: SDWebImage |----SDWebImageCompat 处理不同平台(iOS.TV.OS ...

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

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

  3. C++开源库详细介绍

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

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

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

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

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

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

    在别的地方看的<<给程序员介绍一些C++开源库>>,记录给大家共同学习 首先说明这篇文章不是出自我手,大家共同学习. 引用地址:http://oss.org.cn/?actio ...

  7. 利用人工智能(Magpie开源库)给一段中文的文本内容进行分类打标签

    当下人工智能是真心的火热呀,各种原来传统的业务也都在尝试用人工智能技术来处理,以此来节省人工成本,提高生产效率.既然有这么火的利器,那么我们就先来简单认识下什么是人工智能吧,人工智能是指利用语音识别. ...

  8. 开源库nothings/stb的介绍及使用(图像方面)

    GitHub上有个开源的stb库,Star数已过万,地址为https://github.com/nothings/stb,为何叫stb,是用的作者名字的缩写Sean T. Barrett.此库仅包含头 ...

  9. base64开源库介绍及使用

    网上有一些开源的base64编解码库的实现,下面介绍几个: cppcodec是一个仅包括头文件的C++11库,用于编解码RFC 4648中指定的base64, base64url, base32, b ...

最新文章

  1. Alpha 冲刺 (9/10)
  2. 股市投资大师的股市投资名言
  3. Spring-JdbcTemplate(注入到spring容器)-02
  4. 猜想:汇编指令push和pop对sp的处理顺序缘由
  5. iPhone 12需求强劲 苹果计划将iPhone产量提升30%
  6. 【第52期】游戏策划:应聘的误区你信了几个?
  7. 简单的音频转文字的转换方法
  8. Ubuntu压缩视频
  9. 什么是数据安全,为什么需要数据安全,怎么才能实现数据安全?
  10. 关于电阻的通流能力思考
  11. 关于C语言二级指针正确使用总结
  12. 国外免费(开放获取)学术资源大全
  13. C++ new失败处理
  14. 查看qq空间说说及评论,设置相关表结构
  15. oracle启用amm,使用ASMM和AMM时设置shared_pool
  16. Redis的Lock锁
  17. 数据结构与算法(Python版)二十二:递归可视化(谢尔宾斯基三角形)
  18. 文本相似度的计算-向量空间模型
  19. 知识扩展----快速阅读
  20. createjs之Easeljs

热门文章

  1. mysql数据库进阶_MYSQL数据库进阶操作
  2. java多线程线程池_Java多线程——线程池(ThreadPool)
  3. 远程桌面服务器怎么重启计算机,电脑怎么样远程重新启动
  4. java 反射技术实例,什么是反射技术?Java中最常用的反射技术实例
  5. android 百度地图闪退,Android使用百度地图出现闪退及定位时显示蓝屏问题的解决方法...
  6. python 逐行读取文件_Python fileinput模块:逐行读取多个文件
  7. sp导出法线_SP导出贴图导Redshift渲染效果不同的问题
  8. esxi vsphere的端口_硬干货!一张图弄清楚在ESXi下如何进行网络抓包
  9. java16进制取前几位_16位16进制数怎么取前8位和后8位
  10. 上海电力学院计算机组成与结构试卷,上海电力学院试卷及成绩管理办法