使用开源库 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];

==========================================================================

目录
相关文章
|
5月前
|
Python
Python 内置正则表达式库re的使用
正则表达式是记录文本规则的代码,用于查找和处理符合特定规则的字符串。在Python中,常通过原生字符串`r'string'`表示。使用`re.compile()`创建正则对象,便于多次使用。匹配字符串有`match()`(从开头匹配)、`search()`(搜索首个匹配)和`findall()`(找所有匹配)。替换字符串用`sub()`,分割字符串则用`split()`。
63 3
|
5月前
|
Python Windows
【Python进阶必备】一文掌握re库:实战正则表达式
【Python进阶必备】一文掌握re库:实战正则表达式
108 0
|
11月前
|
Java
java regex 正则表达式 提取数字和去除数字,过滤数字,提取价格
java regex 正则表达式 提取数字和去除数字,过滤数字,提取价格
|
3月前
|
存储 C++ 容器
C++一分钟之-正则表达式库(regex)
【7月更文挑战第7天】C++从C++11开始支持正则表达式,通过`<regex>`库提供功能。本文涵盖基本概念如`std::regex`、`std::smatch`,以及`regex_search`和`regex_match`的使用。常见问题包括大小写敏感性、特殊字符转义、贪婪与非贪婪匹配和捕获组。提供的代码示例展示了如何进行匹配、不区分大小写的匹配、特殊字符匹配、贪婪与非贪婪匹配和捕获组的使用。理解并练习正则表达式能提升文本处理效率。
55 0
|
4月前
|
Python
python re 正则表达式库的使用
python re 正则表达式库的使用
39 0
|
5月前
|
机器学习/深度学习 Python
正则表达式(Regular Expression,常简写为regex或regexp)是一种强大的文本处理工具
【5月更文挑战第12天】正则表达式是文本处理工具,Python的re模块支持其使用。元字符如.、*、+、?等在正则表达式中具有特殊含义,用于指定匹配规则。示例中,通过正则表达式模式匹配字符串中的电子邮件地址,并使用re.findall()找出所有匹配项。
61 4
|
5月前
|
存储 JavaScript API
C++ 正则表达式库 std::basic_regex 中文手册(API说明来自cppreference.com)
C++ 正则表达式库 std::basic_regex 中文手册(API说明来自cppreference.com)
141 0
|
5月前
|
安全
正则表达式(Regular Expression,简称regex或regexp)
正则表达式(Regular Expression,简称regex或regexp)
92 2
|
5月前
|
Python
在Python中,如何使用`regex`库进行正则表达式匹配?
在Python中,如何使用`regex`库进行正则表达式匹配?
58 0
|
5月前
|
Python
除了`re`模块,还有哪些库可以用于正则表达式的匹配?
【2月更文挑战第11天】【2月更文挑战第31篇】
43 0