美文网首页
手机号码正则表达式

手机号码正则表达式

作者: 我只想做一只蚂蚁 | 来源:发表于2017-07-06 11:27 被阅读71次

    今天在测试手机登录时,遇到了一个联通的号码,是以175开头的,之后用网上查找的判断电话号码的正则表达式来判断电话号码,一直不能通过。之后我在表达式里面增添了一个条件,之后我测试是通过了。我把我写的代码列出来,有不对请大家指教。谢谢。

    + (BOOL)judgePhoneNum:(NSString *)phoneNum;{

     phoneNum = [phoneNum stringByReplacingOccurrencesOfString:@" " withString:@""];

    if (phoneNum.length != 11)

    {

    return NO;

    }else{

    /**

    * 移动号段正则表达式

    */

    NSString *CM_NUM = @"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\d{8}|(1705)\\d{7}$";

    /**

    * 联通号段正则表达式

    */

    NSString *CU_NUM = @"^((13[0-2])|(145)|(15[5-6])|(175)|(176)|(18[5,6]))\\d{8}|(1709)\\d{7}$";

    /**

    * 电信号段正则表达式

    */

    NSString *CT_NUM = @"^((133)|(153)|(177)|(18[0,1,9]))\\d{8}$";

    NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM_NUM];

    BOOL isMatch1 = [pred1 evaluateWithObject:phoneNum];

    NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU_NUM];

    BOOL isMatch2 = [pred2 evaluateWithObject:phoneNum];

    NSPredicate *pred3 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT_NUM];

    BOOL isMatch3 = [pred3 evaluateWithObject:phoneNum];

    if (isMatch1 || isMatch2 || isMatch3) {

    return YES;

    }else{

    return NO;

    }

    }

    }

    相关文章

      网友评论

          本文标题:手机号码正则表达式

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