正则表达式简介

作者: 木_木27 | 来源:发表于2015-09-20 23:33 被阅读149次

    基本用法

    • 创建需要匹配的字符串
    • 创建NSRegularExpression对象
    • 执行匹配操作
    //1、需要匹配的字符串
    NSString *string = @"4fjasfioew47f547ji443fcdjhghweu445554ed4";
    //2、创建`NSRegularExpression`对象
    //2.1、匹配样式
    NSString *pattern = @"^\\dF*\\d$";//一个数字开头并结尾的,中间有任意个F
    NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];
    //3、测试字符串
    NSArray *results = [regex matchesInString:string options:0 range:NSMakeRange(0, string.length)];
    NSLog(@"%ld",results.count);
    

    常见匹配样式

    NSString *pattern = @"[0-9]";//寻找字符串里面的数字
    NSString *pattern = @"3fc";//寻找字符串里面的"3fc"
    NSString *pattern = @"[7r4]";//代表找到中括号里面的其中一个字符串就行了
    NSString *pattern = @"[a-z]";//代表小写的a-z
    NSString *pattern = @"[a-zA-Z]";//代表所有英文字母,包括大小写
    NSString *pattern = @"[0-9][0-9]";//找连续连在一起的两个数字,单个数字不算,大于两个的都符合
    NSString *pattern = @"\\d\\d\\d";//找连续连在一起的三个数字,单个、两个数字不算,大于三个的都符合
    NSString *pattern = @"\\d{5}";//五个数字连在一起的
    NSString *pattern = @"\\d{4}d{3}";//四个数字三个d连在一起的
    NSString *pattern = @"\\d{2,4}";//找出两个到四个连在一起的数字
    NSString *pattern = @"^\\d";//数字开头的
    NSString *pattern = @"^\\d{4}";//以4个数字开头的
    NSString *pattern = @"\\d$";//数字结尾的
    NSString *pattern = @"\\d{3}$";//以3个数字结尾的
    NSString *pattern = @"^\\d{2}[0-9a-zA-Z]*\\d$";//以2个数字开头,一个数字结尾的,中间随意
    NSString *pattern = @"^\\d.*\\d$";//一个数字开头并结尾的,中间随意(.表示任何东西,*号代表有多少个都可以)
    NSString *pattern = @"^\\dF*\\d$";//一个数字开头并结尾的,中间有任意个F
    

    常见使用场景

    • 截取符合规则的字符串
    NSString *string = @"abcdefDughijklmnopqDurst1234567Du890";
    NSString *pattern = @"Du";
    NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];
    
    //3、测试字符串
    NSArray *results = [regex matchesInString:string options:0 range:NSMakeRange(0, string.length)];
    //遍历结果
    for (NSTextCheckingResult *result in results) {
            NSLog(@"%@",NSStringFromRange(result.range));
    }
    
    • 匹配emoji表情
    //一般的微博表情是用[哈哈],[hello]表示的
    //解释:左边是[,中间是英文或者是中文,个数是至少一个,右边是]
    NSString *pattern = @"\\[[a-zA-Z\\u4e00-\\u9fa5]+\\]";
    
    • 匹配@字符
    //解释:@开头,中间是英文或者是中文或者是数字,个数是至少一个
    NSString *pattern = @"@[a-zA-Z0-9\\u4e00-\\u9fa5]+";
    
    • 匹配#话题#
    //解释:#开头,#结尾,中间是英文或者是中文或者是数字,个数是至少一个
    NSString *pattern = @"#[a-zA-Z0-9\\u4e00-\\u9fa5]+#\\$";
    
    • 匹配电话号码
    NSString *patterm = @"^1[3578]\\d{9}$";//13,15,17,18等数字开头,中间有9个数字,并以数字结尾
    NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:patterm options:0 error:nil];    
    //测试字符串
    NSArray *results = [regex matchesInString:string options:0 range:NSMakeRange(0, string.length)];
    if(results.count > 0){
        NSLog(@"是电话码号");
    }
    
    • 匹配URL:挺复杂的,请找度娘

    相关文章

      网友评论

      本文标题:正则表达式简介

      本文链接:https://www.haomeiwen.com/subject/tnqicttx.html