前言
大家都知道开发一直离不开一些常用验证格式,比如:邮箱,手机号等等,在开发过程中一般都会新建一个工具类,专门管理这些验证方式,简便开发过程。一般都采用正则表达式的形式来做判断,本文列举一些项目中非常实用的一些正则表达式的判断语句,以后开发起来直接复制粘贴就可以,这样大大节省了开发时间,下面不多说,直接上代码。
一、验证移动手机号:
1
2
3
4
5
6
|
+ (BOOL)isMobile:(NSString*)mobile { NSString *regex = @ "^1+[34578]+\d{9}" ; NSPredicate *pred = [NSPredicate predicateWithFormat:@ "SELF MATCHES %@" , regex]; return [pred evaluateWithObject:mobile]; } |
二、邮箱验证:
1
2
3
4
5
6
|
+ (BOOL)isEmail:(NSString*)email { NSString *regex = @ "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$" ; NSPredicate *pred = [NSPredicate predicateWithFormat:@ "SELF MATCHES %@" , regex]; return [pred evaluateWithObject:email]; } |
三、整形验证
1
2
3
4
5
|
+ (BOOL)isPureInt:(NSString*)string{ NSScanner* scan = [NSScanner scannerWithString:string]; int val; return [scan scanInt:&val] && [scan isAtEnd]; } |
四、浮点型验证
1
2
3
4
5
|
- (BOOL)isPureFloat:(NSString*)string{ NSScanner* scan = [NSScanner scannerWithString:string]; float val; return [scan scanFloat:&val] && [scan isAtEnd]; } |
五、中文验证
1
2
3
4
5
6
|
+ (BOOL)isChinese:(NSString*)chinese { NSString *regex = @ "^[\u4e00-\u9fa5]" ; NSPredicate *pred = [NSPredicate predicateWithFormat:@ "SELF MATCHES %@" , regex]; return [pred evaluateWithObject: chinese]; } |
六、网址URL验证
1
2
3
4
5
6
|
+ (BOOL)isURL:(NSString*)url { NSString *regex = @ "[a-zA-z]+://[^\s]*" ; NSPredicate *pred = [NSPredicate predicateWithFormat:@ "SELF MATCHES %@" , regex]; return [pred evaluateWithObject: url]; } |
七、身份证号验证(比较繁琐)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
+ (BOOL)verifyIDCardNumber:(NSString *)IDCardNumber { IDCardNumber = [IDCardNumber stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; if ([IDCardNumber length] != 18 ) { return NO; } NSString *mmdd = @”((( 0 [ 13578 ]| 1 [ 02 ])( 0 [ 1 - 9 ]|[ 12 ][ 0 - 9 ]| 3 [ 01 ]))|(( 0 [ 469 ]| 11 )( 0 [ 1 - 9 ]|[ 12 ][ 0 - 9 ]| 30 ))|( 02 ( 0 [ 1 - 9 ]|[ 1 ][ 0 - 9 ]| 2 [ 0 - 8 ])))”; NSString *leapMmdd = @” 0229 ”; NSString *year = @”( 19 | 20 )[ 0 - 9 ]{ 2 }”; NSString *leapYear = @”( 19 | 20 )( 0 [ 48 ]|[ 2468 ][ 048 ]|[ 13579 ][ 26 ])”; NSString *yearMmdd = [NSString stringWithFormat:@”%@%@”, year, mmdd]; NSString *leapyearMmdd = [NSString stringWithFormat:@”%@%@”, leapYear, leapMmdd]; NSString *yyyyMmdd = [NSString stringWithFormat:@”((%@)|(%@)|(%@))”, yearMmdd, leapyearMmdd, @” 20000229 ”]; NSString *area = @”( 1 [ 1 - 5 ]| 2 [ 1 - 3 ]| 3 [ 1 - 7 ]| 4 [ 1 - 6 ]| 5 [ 0 - 4 ]| 6 [ 1 - 5 ]| 82 |[ 7 - 9 ] 1 )[ 0 - 9 ]{ 4 }”; NSString *regex = [NSString stringWithFormat:@”%@%@%@”, area, yyyyMmdd , @”[ 0 - 9 ]{ 3 }[ 0 -9Xx]”]; NSPredicate *regexTest = [NSPredicate predicateWithFormat:@ "SELF MATCHES %@" , regex]; if (![regexTest evaluateWithObject:IDCardNumber]) { return NO; } int summary = ([IDCardNumber substringWithRange:NSMakeRange( 0 , 1 )].intValue + [IDCardNumber substringWithRange:NSMakeRange( 10 , 1 )].intValue) * 7 + ([IDCardNumber substringWithRange:NSMakeRange( 1 , 1 )].intValue + [IDCardNumber substringWithRange:NSMakeRange( 11 , 1 )].intValue) * 9 + ([IDCardNumber substringWithRange:NSMakeRange( 2 , 1 )].intValue + [IDCardNumber substringWithRange:NSMakeRange( 12 , 1 )].intValue) * 10 + ([IDCardNumber substringWithRange:NSMakeRange( 3 , 1 )].intValue + [IDCardNumber substringWithRange:NSMakeRange( 13 , 1 )].intValue) * 5 + ([IDCardNumber substringWithRange:NSMakeRange( 4 , 1 )].intValue + [IDCardNumber substringWithRange:NSMakeRange( 14 , 1 )].intValue) * 8 + ([IDCardNumber substringWithRange:NSMakeRange( 5 , 1 )].intValue + [IDCardNumber substringWithRange:NSMakeRange( 15 , 1 )].intValue) * 4 + ([IDCardNumber substringWithRange:NSMakeRange( 6 , 1 )].intValue + [IDCardNumber substringWithRange:NSMakeRange( 16 , 1 )].intValue) * 2 + [IDCardNumber substringWithRange:NSMakeRange( 7 , 1 )].intValue * 1 + [IDCardNumber substringWithRange:NSMakeRange( 8 , 1 )].intValue * 6 + [IDCardNumber substringWithRange:NSMakeRange( 9 , 1 )].intValue * 3 ; NSInteger remainder = summary % 11 ; NSString *checkBit = @ "" ; NSString *checkString = @ "10X98765432" ; checkBit = [checkString substringWithRange:NSMakeRange(remainder, 1 )]; // 判断校验位 return [checkBit isEqualToString:[[IDCardNumber substringWithRange:NSMakeRange( 17 , 1 )] uppercaseString]]; } |
八、一般用户名的验证
1
2
3
4
5
6
|
+ (BOOL) isUserName:(NSString *)name { NSString *userNameRegex = @ "^[A-Za-z0-9]{6,20}+$" ; NSPredicate *userNamePredicate = [NSPredicate predicateWithFormat:@ "SELF MATCHES %@" ,userNameRegex]; return [userNamePredicate evaluateWithObject:name]; } |
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。