正则表达式判断手机号码

2016-09-29  本文已影响0人  Billy_W

使用方法:新建一个继承于NSString的类,再导入NSString+Check.h头文件,通过判断字符串的属性值(checkPhoneNumInput)YES or NO 即可。

#import

@interface NSString (Check)

-(BOOL)checkPhoneNumInput;

@end

// NSString+Check.m

// ics

//

// Created by Casystar on 15-4-2.

// Copyright (c) 2015年 dong. All rights reserved.

//

#import "NSString+Check.h"

@implementation NSString (Check)

-(BOOL)checkPhoneNumInput{

NSString * MOBILE = @"^1(3[0-9]|5[0-35-9]|8[025-9]|70|77)\\d{8}$";

NSString * CM = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\\d)\\d{7}$";

NSString * CU = @"^1(3[0-2]|5[256]|8[56])\\d{8}$";

NSString * CT = @"^1((33|53|8[09])[0-9]|349)\\d{7}$";

// NSString * PHS = @"^0(10|2[0-5789]|\\d{3})\\d{7,8}$";

NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];

NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];

NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];

NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];

BOOL res1 = [regextestmobile evaluateWithObject:(需要判断字符串)];

BOOL res2 = [regextestcm evaluateWithObject:(需要判断字符串)];

BOOL res3 = [regextestcu evaluateWithObject:(需要判断字符串)];

BOOL res4 = [regextestct evaluateWithObject:(需要判断字符串)];

if (res1 || res2 || res3 || res4 )

{

return YES;

}

else

{

return NO;

}

}

@end

ps:1(3[0-9]|5[0-35-9]|8[025-9]|70|77),后面一部分是:\\d{8}。后面一部分很简单就不解释了,前面一部分我们分析一下。前面的1表示开头必须是1,接着是小括号里的式子(3[0-9]|5[0-35-9]|8[025-9]|70|77)。小括号了有四个"|"符号,这个符号我们理解为将式子分为了五部分:3[0-9],5[0-35-9],8[025-9],70,77。接下看一下每个部分表示什么:(我们这里用x表示未知数)

3[0-9]:就是表示匹配3x这样子的数字,x就是【0到9】之间的一个数字,包括0和9;

5[0-35-9]:这里表示匹配5x这样子的数字,x就是【0到3】或者是【5到9】之间的一个数字;

8[025-9]:这里表示匹配8x这样的数字,x就是【0】或者是【2】或者是【5到9】之间的一个数字;

70:表示要匹配70;

77:表示要匹配77;

这五部分因为是在一个小括号中,而且使用了"|"符号来分割,也就是说,这五部分里,我们只需要匹配到其中一个部分就行了。在加上一开始要匹配的数字1,也就是我们的表倒是开头的这部分可以匹配到的数字有:130....139,150...153,155...159,180,182,185...189,170,177。

上一篇下一篇

猜你喜欢

热点阅读