版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012581760/article/details/82861869
匹配URL字符串
NSMutableString * attStr = attString.mutableString;
NSError *error = nil;;
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];
if (error == nil)
{
NSArray *arrayOfAllMatches = [regex matchesInString:attStr
options:0
range:NSMakeRange(0, [attStr length])];
for (NSTextCheckingResult *match in arrayOfAllMatches){
NSRange matchRange = match.range; // location=95, length=23
NSValue * valueRange = [NSValue valueWithRange:matchRange];//NSRange: {95, 23}
NSString* substringForMatch = [attStr substringWithRange:matchRange];// https://www.google.com/
// 给url所在的字符串添加前景颜色
[attString addAttribute:(NSString *)kCTForegroundColorAttributeName value:(id)color.CGColor range:matchRange];
// 给url所在的字符串添加下划线
[attString addAttribute:(NSString *)kCTUnderlineStyleAttributeName value:(id)[NSNumber numberWithInt:kCTUnderlineStyleSingle] range:matchRange];
}
}
匹配email字符串
NSMutableString * attStr = attString.mutableString;
NSError *error = nil;;
NSString *regulaStr = @"[A-Z0-9a-z\\._%+-]+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regulaStr options:NSRegularExpressionCaseInsensitive error:&error];
if (error == nil)
{
NSArray *arrayOfAllMatches = [regex matchesInString:attStr
options:0
range:NSMakeRange(0, [attStr length])];
for (NSTextCheckingResult *match in arrayOfAllMatches){
NSRange matchRange = match.range; //location=22, length=16
NSValue * valueRange = [NSValue valueWithRange:matchRange];//NSRange: {22, 16}
NSString* substringForMatch = [attStr substringWithRange:matchRange];//[email protected]
[attString addAttribute:(NSString *)kCTForegroundColorAttributeName value:(id)color.CGColor range:matchRange];
[attString addAttribute:(NSString *)kCTUnderlineStyleAttributeName value:(id)[NSNumber numberWithInt:kCTUnderlineStyleSingle] range:matchRange];
}
}
匹配电话号码
NSMutableString * attStr = attString.mutableString;
NSError *error = nil;
NSString *regulaStr = @"\\d{3}-\\d{8}|\\d{3}-\\d{7}|\\d{4}-\\d{8}|\\d{4}-\\d{7}|1+[358]+\\d{9}|\\d{8}|\\d{7}";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regulaStr
options:NSRegularExpressionCaseInsensitive
error:&error];
if (error == nil)
{
NSArray *arrayOfAllMatches = [regex matchesInString:attStr
options:0
range:NSMakeRange(0, [attStr length])];
for (NSTextCheckingResult *match in arrayOfAllMatches){
NSRange matchRange = match.range;//location=22, length=8
NSString* substringForMatch = [attStr substringWithRange:matchRange];//13456890000
NSValue * valueRange = [NSValue valueWithRange:matchRange];
[attString addAttribute:(NSString *)kCTForegroundColorAttributeName value:(id)color.CGColor range:matchRange];
[attString addAttribute:(NSString *)kCTUnderlineStyleAttributeName value:(id)[NSNumber numberWithInt:kCTUnderlineStyleSingle] range:matchRange];
}
}