正则表达式-04 实际应用

前端之家收集整理的这篇文章主要介绍了正则表达式-04 实际应用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

正则表达式在实际开发中,常常是为了获取文本中的一些信息,比如邮箱地址,手机号码,http网址之类的截取需求.
假设现在手机上有一条这样的信息,如果我想拨打电话给信息显示里面告知的手机号码,如果手机没有给我们讲号码处理出来,那么我们可能就需要先将号码抄下,再拨号出去,这样显得客户体验不好,所以正则表达式就派上用场了.

博文代码(点击下载)

代码:

int main(int argc,const char * argv[]) {
    @autoreleasepool {
        NSString* message = @"你好,我的手机号码是13800138000,请登录网址http://www.housnk.com向我发一条询价邮件,我的邮箱是housnk@housnk.com";

        NSString* pattern = @"1[3578]\\d{9}";

        NSError* error = [[NSError alloc]init];

        NSRegularExpression* regularExpression = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:&error];

        NSArray* resultArray = [regularExpression matchesInString:message options:NSMatchingReportCompletion range:NSMakeRange(0,message.length)];

        if(resultArray.count){
            for (NSTextCheckingResult* result in resultArray) {
                NSLog(@"%@",[message substringWithRange:result.range]);
            }
        }else{
            NSLog(@"检索无结果");
        }
    }
    return 0;
}

运行结果:

RegularExpression04[3443:303] 13800138000

@”1[3578]\d{9}”这个检索规则的意思是,以1开头,接着第二个字符是”3”,”5”,”7”,”8”中的一个,然后就是9位数字,这样就组成手机号码了.

现在我想要登录www.housnk.com这个网站了,同样最好就是用正则表达式处理出来.
代码:

int main(int argc,我的邮箱是housnk@housnk.com";

// NSString* pattern = @"1[3578]\\d{9}";
        NSString* pattern = @"http(s://|://)?(|www).\\w{2,}.(cn|com|org|net)";

        NSError* error = [[NSError alloc]init];

        NSRegularExpression* regularExpression = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:&error];

        NSArray* resultArray = [regularExpression matchesInString:message options:NSMatchingReportCompletion range:NSMakeRange(0,[message substringWithRange:result.range]);
            }
        }else{
            NSLog(@"检索无结果");
        }
    }
    return 0;
}

运行结果:

RegularExpression04[3580:303] http://www.housnk.com

其实上述的规则还不是很严谨,如果是实际的地址,可能是http: //www.housnk.com/login/user这样的网址,所以不是很严谨,所以我们只要匹配以http或者https和www开头的网址,不以汉字为结尾的规则就可以了,

代码示例:

int main(int argc,我的邮箱是housnk@housnk.com";

// NSString* pattern = @"1[3578]\\d{9}";
// NSString* pattern = @"http(s://|://)?(|www).\\w{2,}.(cn|com|org|net)";
        NSString* pattern = @"http(s://|://)?(|www).[^\u4e00-\u9fa5]{2,}";

        NSError* error = [[NSError alloc]init];

        NSRegularExpression* regularExpression = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:&error];

        NSArray* resultArray = [regularExpression matchesInString:message options:NSMatchingReportCompletion range:NSMakeRange(0,[message substringWithRange:result.range]);
            }
        }else{
            NSLog(@"检索无结果");
        }
    }
    return 0;
}

运行结果:

RegularExpression04[836:303] http://www.housnk.com
原文链接:https://www.f2er.com/regex/360709.html

猜你在找的正则表达式相关文章