写在前面:在开发过程中,有时候我们需要对一段文字进行网址检测,并显示出不一样的颜色,这时就需要利用正则表达式进行网址解析。解析出网址后再利用富文本进行展示不一样的字体颜色。
+ (NSArray *)getWebsitesWithString:(NSString *)string
{
NSError *error;
// NSString *regulaStr = @"\\bhttps?://[a-zA-Z0-9\\-.]+(?::(\\d+))?(?:(?:/[a-zA-Z0-9\\-._?,'+\\&%$=~*!():@\\\\]*)+)?";
NSString *regulaStr = @"((http[s]{0,1}|ftp)://[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)|(www.[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regulaStr options:NSRegularExpressionCaseInsensitive error:&error];
NSArray *arrayOfAllMatches = [regex matchesInString:string options:0 range:NSMakeRange(0, [string length])];
NSMutableArray *result = [NSMutableArray array];
for (NSTextCheckingResult *match in arrayOfAllMatches)
{
NSString *substringForMatch = [string substringWithRange:match.range];
NSLog(@"%@",substringForMatch);
[result addObject:substringForMatch];
}
return (NSArray *)result;
}