gpt4 book ai didi

iOS开发验证判断语句之正则表达式小结

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章iOS开发验证判断语句之正则表达式小结由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

前言 。

大家都知道开发一直离不开一些常用验证格式,比如:邮箱,手机号等等,在开发过程中一般都会新建一个工具类,专门管理这些验证方式,简便开发过程。一般都采用正则表达式的形式来做判断,本文列举一些项目中非常实用的一些正则表达式的判断语句,以后开发起来直接复制粘贴就可以,这样大大节省了开发时间,下面不多说,直接上代码.

1、验证移动手机号:

?
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];
}

2、邮箱验证:

?
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];
}

3、整形验证 。

?
1
2
3
4
5
+ (BOOL)isPureInt:(NSString*)string{
   NSScanner* scan = [NSScanner scannerWithString:string];
   int val;
   return [scan scanInt:&val] && [scan isAtEnd];
}

4、浮点型验证 。

?
1
2
3
4
5
- (BOOL)isPureFloat:(NSString*)string{
   NSScanner* scan = [NSScanner scannerWithString:string];
   float val;
   return [scan scanFloat:&val] && [scan isAtEnd];
}

5、中文验证 。

?
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];
}

6、网址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];
}

7、身份证号验证(比较繁琐) 。

?
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]];
}

8、一般用户名的验证 。

?
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];
}

总结 。

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流.

最后此篇关于iOS开发验证判断语句之正则表达式小结的文章就讲到这里了,如果你想了解更多关于iOS开发验证判断语句之正则表达式小结的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com