iOS 正则表达式判断手机号码、固话
话不多说,请看代码:
{
if(mobileNum.length!=11)
{
returnNO;
}
/**
*手机号码:
*13[0-9],14[5,7],15[0,1,2,3,5,6,7,8,9],17[6,7,8],18[0-9],170[0-9]
*移动号段:134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705
*联通号段:130,131,132,155,156,185,186,145,176,1709
*电信号段:133,153,180,181,189,177,1700
*/
NSString*MOBILE=@"^1(3[0-9]|4[57]|5[0-35-9]|8[0-9]|7[0678])\\d{8}$";
/**
*中国移动:ChinaMobile
*134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705
*/
NSString*CM=@"(^1(3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])\\d{8}$)|(^1705\\d{7}$)";
/**
*中国联通:ChinaUnicom
*130,131,132,155,156,185,186,145,176,1709
*/
NSString*CU=@"(^1(3[0-2]|4[5]|5[56]|7[6]|8[56])\\d{8}$)|(^1709\\d{7}$)";
/**
*中国电信:ChinaTelecom
*133,153,180,181,189,177,1700
*/
NSString*CT=@"(^1(33|53|77|8[019])\\d{8}$)|(^1700\\d{7}$)";
/**
25*大陆地区固话及小灵通
26*区号:010,020,021,022,023,024,025,027,028,029
27*号码:七位或八位
28*/
//NSString*PHS=@"^(0[0-9]{2})\\d{8}$|^(0[0-9]{3}(\\d{7,8}))$";
NSPredicate*regextestmobile=[NSPredicatepredicateWithFormat:@"SELFMATCHES%@",MOBILE];
NSPredicate*regextestcm=[NSPredicatepredicateWithFormat:@"SELFMATCHES%@",CM];
NSPredicate*regextestcu=[NSPredicatepredicateWithFormat:@"SELFMATCHES%@",CU];
NSPredicate*regextestct=[NSPredicatepredicateWithFormat:@"SELFMATCHES%@",CT];
if(([regextestmobileevaluateWithObject:mobileNum]==YES)
||([regextestcmevaluateWithObject:mobileNum]==YES)
||([regextestctevaluateWithObject:mobileNum]==YES)
||([regextestcuevaluateWithObject:mobileNum]==YES))
{
returnYES;
}
else
{
returnNO;
}
}
拓展:
如果只是简单匹配是否是手机号码,并不需要上面那么多行代码,可以简单写成这样:
NSString*MOBILE=@"^1(3[0-9]|4[57]|5[0-35-9]|8[0-9]|7[0678])\\d{8}$";
NSPredicate*regextestmobile=[NSPredicatepredicateWithFormat:@"SELFMATCHES%@",MOBILE];
return[regextestmobileevaluateWithObject:mobileNum];
如果你需要匹配是否是移动/联通/电信手机号。
判断移动手机号就是这样:
+(BOOL)isChinaMobile:(NSString*)phoneNum
{
NSString*CM=@"(^1(3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])\\d{8}$)|(^1705\\d{7}$)";
NSPredicate*regextestcm=[NSPredicatepredicateWithFormat:@"SELFMATCHES%@",CM];
return[regextestcmevaluateWithObject:phoneNum];
}
同理判断联通手机号,只要把我们的正则字符串改成上面判断联通手机号的字符串就可以了。判断哪种就改变正则表达式就可以了。此外,在这个基础上,我们还可以组合来判断具体是哪个运营商的手机号,代码如下:
+(NSString*)getPhoneNumType:(NSString*)phoneNum
{
return[selfisChinaMobile:phoneNum]?@"中国移动":([selfisChinaUnicom:phoneNum]?@"中国联通":([selfisChinaTelecom:phoneNum]?@"中国电信":@"未知"));
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!
