iOS中正则表达式的三种使用方式

正则语法努力学习中

一:使用NSPredicate(谓词)匹配

 NSString *mail = @"zhangrongwuios@icloud.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:mail];

二:rangeOfString: option: 进行搜索

 NSString *text = @"// Do any additional setup after loading the view, typically from a nib.";
    NSRange range  = [text rangeOfString:@"(?:[^,])*\\." options:NSRegularExpressionSearch];
    if (range.location != NSNotFound) {
        NSLog(@"%@", [text substringWithRange:range]);
    }

三:使用iOS系统正则表达类

   NSString *text = @"// Do any additional setup after loading the typically from a nib. view, typically from a nib.";
    NSError *error = NULL;
    NSRegularExpression *regx = [NSRegularExpression regularExpressionWithPattern:@"(?:[^,])*\\." options:NSRegularExpressionCaseInsensitive error:&error];
   
    // 匹配多个
    NSArray<NSTextCheckingResult *> *results = [regx matchesInString:text options:0 range:NSMakeRange(0, text.length)];
    [results enumerateObjectsUsingBlock:^(NSTextCheckingResult * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        NSLog(@"%@", obj);
        if (obj) {
            NSLog(@"多次匹配结果 :%@", [text substringWithRange:obj.range]);
        }
    }];
   
    // 匹配单个
    NSTextCheckingResult *result = [regx firstMatchInString:text options:0 range:NSMakeRange(0, [text length])];
    if (result) {
        NSLog(@"%@", [text substringWithRange:result.range]);
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏陈满iOS

iOS复习中有关SDWebImage可能知识点总结(2)

分为内存缓存(利用SDImageCache类的NSCache属性),磁盘缓存(利用NSFileManager),和操作缓存(利用runtime关联的字典属性)。...

941
来自专栏编程之旅

iOS开发——大大节省代码量的小技巧

794
来自专栏wOw的Android小站

[iOS] 小问题记录

iOS 往数据库里写保存文件路径的时候,不要写全路径,因为软件更新或者重新安装沙盒路径会变

452
来自专栏DannyHoo的专栏

KVO代码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

701
来自专栏一“技”之长

iOS简易蓝牙对战五子棋游戏设计思路之二——核心棋盘逻辑与胜负判定算法

    上一篇博客我们介绍了在开发一款蓝牙对战五子棋游戏中核心的蓝牙通讯框架的设计与编写,本篇博客将来完成独立的棋盘逻辑与胜负判定算法。上篇博客地址如下:

762
来自专栏陈满iOS

iOS开发:从本地文件读取字符串:stringWithContentsOfFile&initWithContentsOfFile

Returns a string created by reading data from the file at a given path interpret...

702
来自专栏iOS 开发

给系统类扩展属性(枚举)或方法

1675
来自专栏猿人谷

第一个APP:IOS做简单运算的计算器

步骤: 1.打开Xcode,单机Creat a new Xcode project 2.左边选择ios下Application,右边选择single view ...

1848
来自专栏coding...

iOS开发实战-时光记账Demo 本地数据库版效果分析Demo地址

由于主页只是一个展示的时光轴界面,UIScrollView加几个按钮就能完成,需要读取数据库内容,所以我们先把内页-增加账单 完成。

762
来自专栏陈满iOS

iOS·数组元素逆序方案

求解: strArr的反序数组strRevArr,即元素顺序分别为e,d,c,b,a。

744

扫码关注云+社区