美文网首页
2018-12-20 网易云信检测消息体内得电话号码

2018-12-20 网易云信检测消息体内得电话号码

作者: Funcy1Day | 来源:发表于2018-12-20 10:08 被阅读7次

NIMSessionTextContentView中检测文本内容:

#define PHONEREGULAR @"\\d{3,4}[- ]?\\d{7,8}"//匹配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];

            }

        }];

    }

相关文章

网友评论

      本文标题:2018-12-20 网易云信检测消息体内得电话号码

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