NIMSessionTextContentView中检测文本内容:
#define PHONEREGULAR @"\\d{3,4}[- ]?\\d{7,8}"http://匹配10到12位连续数字,或者带连字符/空格的固话号,空格和连字符可以省略。
/*
*? // 验证是固话或者手机号
*
*? @param mobileNum 手机号
*
*? @return 是否
*/
- (BOOL)isMobilePhoneOrtelePhone:(NSString*)mobileNum {
? ? if(mobileNum==nil|| mobileNum.length==0) {
? ? ? ? returnNO;
? ? }
? ? /**
?? ? * 手机号码
?? ? * 移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
?? ? * 联通:130,131,132,152,155,156,185,186
?? ? * 电信:133,1349,153,180,189
?? ? */
? ? NSString * MOBILE = @"^((13)|(14)|(15)|(17)|(18))\\d{9}$";// @"^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$";
? ? /**
?? ? 10? ? ? ? * 中国移动:China Mobile
?? ? 11? ? ? ? * 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
?? ? 12? ? ? ? */
? ? NSString * CM = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\\d)\\d{7}$";
? ? /**
?? ? 15? ? ? ? * 中国联通:China Unicom
?? ? 16? ? ? ? * 130,131,132,152,155,156,185,186
?? ? 17? ? ? ? */
? ? NSString * CU = @"^1(3[0-2]|5[256]|8[56])\\d{8}$";
? ? /**
?? ? 20? ? ? ? * 中国电信:China Telecom
?? ? 21? ? ? ? * 133,1349,153,180,189
?? ? 22? ? ? ? */
? ? NSString * CT = @"^1((33|53|8[09])[0-9]|349)\\d{7}$";
? ? /**
?? ? 25? ? ? ? * 大陆地区固话及小灵通
?? ? 26? ? ? ? * 区号:010,020,021,022,023,024,025,027,028,029
?? ? 27? ? ? ? * 号码:七位或八位
?? ? 28? ? ? ? */
? ? NSString * PHS = @"^((0\\d{2,3}-?)\\d{7,8}(-\\d{2,5})?)$";// @"^0(10|2[0-5789]-|\\d{3})\\d{7,8}$";
? ? NSPredicate *regextestPHS = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", PHS];
? ? NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
? ? NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];
? ? NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];
? ? NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];
? ? if(([regextestmobileevaluateWithObject:mobileNum] ==YES)
? ? ? ? || ([regextestcmevaluateWithObject:mobileNum] ==YES)
? ? ? ? || ([regextestctevaluateWithObject:mobileNum] ==YES)
? ? ? ? || ([regextestcuevaluateWithObject:mobileNum] ==YES)
? ? ? ? || ([regextestPHSevaluateWithObject:mobileNum]==YES)) {
? ? ? ? returnYES;
? ? }
? ? else{
? ? ? ? returnNO;
? ? }
}
?NSRangestringRange =NSMakeRange(0, text.length);
? ? //正则匹配
? ? NSError*error;
? ? NSRegularExpression *regexps = [NSRegularExpression regularExpressionWithPattern:PHONEREGULAR options:0 error:&error];
? ? if(!error && regexps !=nil) {
? ? ? ? [regexpsenumerateMatchesInString:text options:0 range:stringRange usingBlock:^(NSTextCheckingResult * _Nullable result, NSMatchingFlags flags, BOOL * _Nonnull stop) {
? ? ? ? ? ? //可能为电话号码的字符串及其所在位置
? ? ? ? ? ? NSString *actionString = [NSString stringWithFormat:@"%@",[self.textLabel.text substringWithRange:result.range]];
? ? ? ? ? ? NSRangephoneRange = result.range;
? ? ? ? ? ? //这里需要判断是否是电话号码,并添加链接
? ? ? ? ? ? if([selfisMobilePhoneOrtelePhone:actionString]) {
? ? ? ? ? ? ? ? [self.textLabeladdCustomLink:actionStringforRange:result.range];
? ? ? ? ? ? }
? ? ? ? }];
? ? }