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字符串编码与解码方法的实现与调用(UrlEncode/UrlDecode)

建议自己写个Category。比如,可以基于NSString新建一个URLEncoding类别文件,类名分别为NSString+URLEncoding.h和NS...

2404
来自专栏岑志军的专栏

iOS提取字符串

1263
来自专栏iOS 开发杂谈

浅谈 KVO 的实现原理

KVO 全称 KeyValueObserving 是 Objective-C 对观察者模式(Observer Pattern)的实现;KVO 提供一种机制,当指...

1673
来自专栏西二旗一哥

A interesting inheritance question between self and super

734
来自专栏猿人谷

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

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

1958
来自专栏Core Net

IOS @proporty 关键字(一)retain strong

3345
来自专栏freesan44

WebViewJavascriptBridge优化开发背景处理办法

WebViewJavascriptBridge作为JS和原生OC的交互,通常都是在WebView中用self.bridge注册方法来进行调用,但这样对于WebV...

551
来自专栏ios 技术积累

Objective-C Float 转化成NSString 小数不精确解决

1121
来自专栏陈满iOS

iOS系统源码思考:对象的引用计数存储在哪里?--从runtime源码得到的启示

iOS开发者都知道OC里面的内存管理是通过对象的引用计数来管理的,或手动MRC,或自动ARC,有些操作可以让引用计数加1,有些可以减1,一旦一个对象的引用计数为...

932
来自专栏编程之旅

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

914

扫码关注云+社区