iOS正则验证手机号的三种方式

来源:互联网 发布:magnet协议软件下载 编辑:程序博客网 时间:2024/05/20 00:15

//验证是否是手机号:手机号必须是11位以1开头的手机号,前面可以有86

//返回BOOL值,我是因为要直接使用三种才写的void,任选一种都可以,最好还是学一下正则的表达方式,上一篇

- (void)isValidateMobileNumber:(NSString *)string

{

    //Pattern:查找条件

    //验证手机号@"^(86)?+1+[0-9]{10}$"或者@"^(86)?(1)[0-9]{10}$"都可以

    

    //正则说明:http://blog.csdn.net/linlinyin1991/article/details/50393550

    

    

    //第一种:使用NSRegularExpression

    //"^$":开头结尾  (86)?:以86开头或者没有 +1 :以1开头  [0-9]{10}101-9的数字


    NSRegularExpression * phoneRegular = [[NSRegularExpressionalloc]initWithPattern:@"^(86)?(1)[0-9]{10}$"options:NSRegularExpressionCaseInsensitiveerror:nil];

    

    

    /*

     typedef NS_OPTIONS(NSUInteger, NSMatchingOptions) {

     NSMatchingReportProgress         = 1 << 0, //找到最长的匹配字符串后调用block回调

     NSMatchingReportCompletion       = 1 << 1, //找到任何一个匹配串后都回调一次block

     NSMatchingAnchored               = 1 << 2, //从匹配范围的开始出进行极限匹配

     NSMatchingWithTransparentBounds  = 1 << 3, //允许匹配的范围超出设置的范围

     NSMatchingWithoutAnchoringBounds = 1 << 4  //禁止^$自动匹配行还是和结束

     };

     */

    NSArray * resultArr = [phoneRegularmatchesInString:stringoptions:NSMatchingReportProgressrange:NSMakeRange(0, string.length)];

    NSLog(@"resultArr = %@",resultArr);

    

    //第二种:使用NSPredicate查询

    NSPredicate * predicate = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@",@"^(86)+1+[0-9]{10}$"];

    BOOL result = [predicateevaluateWithObject:string];

    if (result) {

        //查询到结果

    }

    

    //第三种:rangeOfString查询

    NSString *searchText = string;

    NSRange range = [searchTextrangeOfString:@"^(86)?+1+[0-9]{10}$"options:NSRegularExpressionSearch];

    if (range.location !=NSNotFound) {

        NSLog(@"rangeStr=%@", [searchTextsubstringWithRange:range]);

    }

    

    

//    //使用block方式

//    [regular enumerateMatchesInString:string options:NSMatchingReportProgress range:NSMakeRange(0, string.length) usingBlock:^(NSTextCheckingResult * _Nullable result, NSMatchingFlags flags, BOOL * _Nonnull stop) {

//        if (result)

//        {

//            NSLog(@"result = %@\nflags = %lu",result,(unsigned long)flags);

//        }

//    }];

}



0 0