iOS开发正则表达式的学习

正则表达式笔记

每天的一小步,知道我在不断进步,这就是我每天的小目标。 
这是我的第一篇博客,在工作之余,我会努力地留下些许脚印。 
我是一名iOS开发者,对于iOS我仅仅只是一个菜鸟,愿意在此处留下我的经验来帮助更多的朋友一起学习,有任何疑问,都欢迎指点和批评。

这是一个正则表达式基础篇,并提供了目前比较常用的一些正则表达式格式。 1.什么是正则表达式

正则表达式提供了一种在指定模式中搜索匹配的模式,这种模式匹配能让你做更有用的事,如验证字段,电话号码,邮箱地址,检查用户输入,执行更高级的文本操作等等。

2.个人学习笔记

1.行定位符:以”^”表示行的开始,“$”表示行的结尾
2.单词定界符(\b.\B)    \btm\b   匹配包含tm的单词
3.字符类[ ]:匹配tm不区分大小写:[Tt][Mm]
4.选择字符|:T|tM|m     以T或t开头,接一个字母M或m
5.连字符-:[a-zA-Z]     匹配一个字母
6.排除字符 [^]:    [^a-zA-Z]    匹配除了字母和下划线
7.限定符  ?:  匹配前面的字符0次或1次。colou?r  可以匹配colour和color
         +:匹配前面的字符一次或多次。go+gle  可以匹配gogle。。。goo...gle
         *:匹配前面的字符0次或多次。
       {n}:  匹配前面的字符n次   go{2}gle   匹配google
      {n,}:匹配前面的字符最少n次
     {n,m}:匹配前面的字符最少n次,最多m次
8.点号字符(.):匹配一个单词,第一个字母为r,第三个字符为s,最后一个字母为t。
   ^r.s.*t$
9.转义字符(\): [0-9]{1,3}(\.[0-9]{1,3}){3}
10.反斜线   \d:任意一个十进制数字,相当于[0-9]
           \D:任意一个非十进制数字
           \s:任意一个空白字符(\f\n\r\t)
           \w:任意一个单词字符,相当于[a-zA-Z0-9_]

3.附上常用的iOS使用的正则表达式代码

//邮箱验证 
+ (BOOL)validateEmail:(NSString *)email 

NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 
return [emailTest evaluateWithObject:email]; 

//手机号码验证 
+ (BOOL)validateMobile:(NSString *)mobile 

//手机号以13, 15,18,17开头,八个 \d 数字字符 
NSString *phoneRegex = @"^1(3[0-9]|4[57]|5[0-35-9]|7[01678]|8[0-9])\\d{8}$"; 
NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex]; 
return [phoneTest evaluateWithObject:mobile]; 
}

//车牌号验证 
+ (BOOL)validateCarNo:(NSString *)carNo 

NSString *carRegex = @"^[\u4e00-\u9fa5]{1}[a-zA-Z]{1}[a-zA-Z_0-9]{4}[a-zA-Z_0-9_\u4e00-\u9fa5]$"; 
NSPredicate *carTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",carRegex]; 
NSLog(@"carTest is %@",carTest); 
return [carTest evaluateWithObject:carNo]; 
}

//车型 
+ (BOOL)validateCarType:(NSString *)CarType 

NSString *CarTypeRegex = @"^[\u4E00-\u9FFF]+$"; 
NSPredicate *carTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",CarTypeRegex]; 
return [carTest evaluateWithObject:CarType]; 
}

//用户名 
+ (BOOL)validateUserName:(NSString *)name 

NSString *userNameRegex = @"^[A-Za-z0-9]{6,20}+$"; 
NSPredicate *userNamePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",userNameRegex]; 
BOOL B = [userNamePredicate evaluateWithObject:name]; 
return B; 
}

//密码 
+ (BOOL) validatePassword:(NSString *)passWord 

NSString *passWordRegex = @"^[a-zA-Z0-9]{6,20}+$"; 
NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",passWordRegex]; 
return [passWordPredicate evaluateWithObject:passWord]; 
}

//昵称 
+ (BOOL) validateNickname:(NSString *)nickname 

NSString *nicknameRegex = @"^[\u4e00-\u9fa5]{4,8}$"; 
NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",nicknameRegex]; 
return [passWordPredicate evaluateWithObject:nickname]; 
}

//身份证号 
+ (BOOL) validateIdentityCard: (NSString *)identityCard 

BOOL flag; 
if (identityCard.length <= 0) { 
flag = NO; 
return flag; 

NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$"; 
NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2]; 
return [identityCardPredicate evaluateWithObject:identityCard]; 
}

4.参考链接

正则表达式升级篇

posted @ 2016-09-20 16:12  溺水的小小鱼  阅读(194)  评论(0编辑  收藏  举报