代码改变世界

iOS 正则表达式(一)

  jiangys  阅读(479)  评论(0编辑  收藏  举报

在iOS开发中,正则一直是最常用的,但也是一直记不住的,现在做一些简单的总结

我们在网上找的正则,要有'\',这个在iOS是转义符,需要'\\'这样

复制代码
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        // 1.创建正则表达式
        // []:找到内部的某一个字符串
        // "[a-z]" :小写
        // "[a-zA-Z]" :大小写
        // "[a-zA-Z0-9]" :大小写及数字
        // "\\d" 相当于 "[0-9]"
        // "\\d{3}" 相当于“\\d\\d\\d”,表示找到连续3个一起的数字
        // "\\d{2,4}" 表示2数字或者4个数字 符合的。如"342455" ,得到两个结果“3424“和”55”
        
        // .    匹配除换行符以外的任意字符
        // \w    匹配字母或数字或下划线或汉字
        // \s    匹配任意的空白符
        // \d    匹配数字
        // \b    匹配单词的开始或结束
        //  ^    匹配字符串的开始。如 @"^\\d{2}" : 表示以2数字开头,“345dd”匹配1个,“1d2e33”没有匹配
        //  $    匹配字符串的结束。如 @"\\d{2}$" :表示以2数字结尾,“ddd22”匹配1个,"dd3s3s"没有匹配
        //  例如手机:@"^1[3578]\\d{9}$" ,表示以1开头,中间匹配任意3,5,7,8 ,最后以9个数字结尾
        //  当然,正确的手机"1[3578]\\d{9}$"和"1[3578]\\d{9}" 写都是可以匹配的。
        
        //        *    重复零次或更多次
        //        +    重复一次或更多次
        //        ?    重复零次或一次
        
        NSString *userName = @"13800138000";
        
        NSString *pattern = @"^1[3578]\\d{9}$";
        NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];
        
        // 测试字符串
        NSArray *resultArray = [regex matchesInString:userName options:0 range:NSMakeRange(0, userName.length)];
        
        NSLog(@"%zd",resultArray.count);
    }
    return 0;
}
复制代码

 

打印出匹配的字符

复制代码
        NSString *userName = @"ddd333jda892dd34dsss";
        
        NSString *pattern = @"[a-zA-Z]+"; // 匹配一次或更多次,会打印出连续的英文
        NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];
        
        NSArray *resultArray = [regex matchesInString:userName options:0 range:NSMakeRange(0, userName.length)];
        
        for (NSTextCheckingResult *result in resultArray) {
             NSLog(@"%@ %@",NSStringFromRange(result.range),[userName substringWithRange:result.range]);
        }
复制代码

结果(会打印出连续的结果):

 

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示