手机号码正则表达式

今天在测试手机登录时,遇到了一个联通的号码,是以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;

}

}

}

你可能感兴趣的:(手机号码正则表达式)