美文网首页iOS学习
可以判断电话号码是否合法的那个类

可以判断电话号码是否合法的那个类

作者: 汪小喵 | 来源:发表于2016-11-25 16:50 被阅读25次

    一直在用正则式判断电话号码是否合法,然而我还不很会写正则式,后来发现了这样一个类——NSDataDetector。在昨天之前我都不知道这是个啥,实际用了一下,可以用,但有些不足。

    + (nullable NSDataDetector *)dataDetectorWithTypes:(NSTextCheckingTypes)checkingTypes error:(NSError **)error;
    - (nullable instancetype)initWithTypes:(NSTextCheckingTypes)checkingTypes error:(NSError **)error NS_DESIGNATED_INITIALIZER;
    

    实际用法就贴一下代码吧,直接粘贴就可以

        NSError *error = nil;
        NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypePhoneNumber | NSTextCheckingTypeLink
                                                                   error:&error];
        NSString *testStr = @"有一个网址:www.balabala.com有一个电话:13567827891"; // 网址电话是随意写的
        [detector enumerateMatchesInString:testStr
                                   options:kNilOptions
                                     range:NSMakeRange(0, testStr.length)
                                usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
                                    //NSTextCheckingResult有很多属性,和检测的类型相匹配,如URL,phoneNumber,date,addressComponents等等
                                    //NSTextCheckingResult还有Range 和 NSTextCheckingType两个属性,方便进行操作
                                    NSLog(@"result.range = %@",NSStringFromRange(result.range));
                                    if (result.URL) {
                                        NSLog(@"url = %@",result.URL);
                                    }
                                    if (result.phoneNumber) {
                                        NSLog(@"phone = %@",result.phoneNumber);
                                    }
                                }];
    

    但是我发现,只要数字连续5位及以上,就会判断为电话号码,比如写个“33333”。所以和实际需求好像还是有些出入,如果要求不是很高的话,就可以省去写正则表达式的麻烦了。
    对于判断URL,Date, AddressConponents等,这些类的合法性还是可以用的,毕竟我们也没有什么好方法。

    可以结合我之前写的一篇UIlabel各种字体各种颜色拼接来实现Label,textView等的高亮显示。

    相关文章

      网友评论

        本文标题:可以判断电话号码是否合法的那个类

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