- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
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的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
创建一个“海盗对话”,可以选择左手或右手。我希望它对“左”和“右”的不同拼写做出积极的回答(正如您将在代码中看到的那样),但是,当我为所有非“右”或“左”的输入添加最终的“else”代码时,它给了我一
With 语句 对一个对象执行一系列的语句。 With object statements End With 参数 object 必需的部分
While...Wend 语句 当指定的条件为 True 时,执行一系列的语句。 While condition  ; Version [stat
所以我正在处理的代码有一个小问题。 while True: r = input("Line: ") n = r.split() if r == " ":
我有一个对象数组: var contacts = [ { "firstName": "Akira", "lastName": "Laine", "number"
int main() { int f=fun(); ... } int fun() { return 1; return 2; } 在上面的程序中,当从main函数中调用一个
我的项目中有很多 if 语句、嵌套 if 语句和 if-else 语句,我正在考虑将它们更改为 switch 语句。其中一些将具有嵌套的 switch 语句。我知道就编译而言,switch 语句通常更
Rem 语句 包含程序中的解释性注释。 Rem comment 或 ' comment comment 参数是需要包含的注释文本。在 Rem 关键字和 comment 之间应有一个空格。
ReDim 语句 在过程级中声明动态数组变量并分配或重新分配存储空间。 ReDim [Preserve] varname(subscripts) [, varname(subscripts)]
Randomize 语句 初始化随机数生成器。 Randomize [number] number 参数可以是任何有效的数值表达式。 说明 Randomize 使用 number 参数初始
Public 语句 定义公有变量并分配存储空间。在 Class 块中定义私有变量。 Public varname[([subscripts])][, varname[([subscripts])
Sub 语句 声明 Sub 过程的名称、参数以及构成其主体的代码。 [Public [Default]| Private] Sub name [( arglist )]
Set 语句 将对象引用赋给一个variable或property,或者将对象引用与事件关联。 Set objectvar = {objectexpression | New classname
我有这个代码块,有时第一个 if 语句先运行,有时第二个 if 语句先运行。我不确定为什么会这样,因为我认为 javascript 是同步的。 for (let i = 0; i < dataObje
这是一个 javascript 代码,我想把它写成这样:如果此人回答是,则回复“那很酷”,如果此人回答否,则回复“我会让你开心”,如果此人回答的问题包含"is"或“否”,请说“仅键入”是或否,没有任何
这是我的任务,我尝试仅使用简短的 if 语句来完成此任务,我得到的唯一错误是使用“(0.5<=ratio<2 )”,除此之外,构造正确吗? Scanner scn = new Scanner(
有没有办法在 select 语句中使用 if 语句? 我不能在这个中使用 Case 语句。实际上我正在使用 iReport 并且我有一个参数。我想要做的是,如果用户没有输入某个参数,它将选择所有实例。
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: If vs. Switch Speed 我将以 C++ 为例,但我要问的问题不是针对特定语言的。我的意思是一
Property Set 语句 在 Class 块中,声明名称、参数和代码,这些构成了将引用设置到对象的 Property 过程的主体。 [Public | Private] Pro
Property Let 语句 在 Class 块中,声明名称、参数和代码等,它们构成了赋值(设置)的 Property 过程的主体。 [Public | Private] Prop
我是一名优秀的程序员,十分优秀!