OC中的正则表达式的使用

    最近在学习正则表达式,一直想写一篇关于正则表达式的博客,但是自己一直懒,一直拖,一直都没有写,趁着十一放假清闲,总结一下OC中的正则表达式的基本用法,正则表达式在对字符串进行处理的时候帮助很大。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。总结一下OC中的正则表达式的使用吧。

/**

     使用正则表达式的步骤:

     1.创建一个正则表达式对象:定义规则

     

     2.利用正则表达式对象 来测试 相应的字符串

     */

    

    // Pattern : 样式\规则

    //        NSString *pattern = @"ab7";

    // [] : 找到内部的某一个字符即可

    //        NSString *pattern = @"[0123456789]";

    //        NSString *pattern = @"[0-9]";

    //        NSString *pattern = @"[a-zA-Z0-9]";

    //        NSString *pattern = @"[0-9][0-9]";

    //        NSString *pattern = @"\\d\\d\\d";

    //        NSString *pattern = @"\\d{2,4}";

    

    // ? + *

    // ? : 0个或者1

    // + : 至少1

    // * : 0个或者多个

NSString *username = @"6gjssdfkhdjkhgkjh7";

    // 1.创建正则表达式

    NSString *pattern = @"^\\d.*\\d$"; // 以数字开头并且以数字结尾

    NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];

    

    // 2.测试字符串

    NSArray *results = [regex matchesInString:username options:0 range:NSMakeRange(0, username.length)]; // 查找整个字符串,返回值是数组,数组中存放的是符合条件的字符串


匹配多个条件的正则表达式

// 表情的规则

    NSString *emotionPattern = @"\\[[0-9a-zA-Z\\u4e00-\\u9fa5]+\\]";

    

    // @的规则

    NSString *atPattern = @"@[0-9a-zA-Z\\u4e00-\\u9fa5]+";

    

    // #话题#的规则

    NSString *topicPattern = @"#[0-9a-zA-Z\\u4e00-\\u9fa5]+#";

    

    // url链接的规则

    NSString *urlPattern = @"\\b(([\\w-]+://?|www[.])[^\\s()<>]+(?:\\([\\w\\d]+\\)|([^[:punct:]\\s]|/)))";

    

    // | 匹配多个条件,相当于or\

    NSString *pattern = [NSString stringWithFormat:@"%@|%@|%@|%@", emotionPattern, atPattern, topicPattern, urlPattern];

NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];

    // 2.测试字符串

    NSArray *results = [regex matchesInString:testStr options:0 range:NSMakeRange(0, testStr.length)];



关于正则表达式常用的匹配条件:

常用的正则表达式的匹配条件请自行百度。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值