正则表达式是独立于任何编程语言的一门知识,却被广泛应用在各种开发环境中.
正则表达式在OC中可以使用一个叫做
NSRegularExpression
的类来处理.本文初步记录了自己在使用过程中的一点体会.
记录点滴,供以后查阅之用.
从一个验证邮箱是否合法的需求说起
产品设计中,需要用户使用邮箱作为账号来进行登陆,在进行网络验证前,应在本地进行合理的邮箱合法性处理.因此在获取用户输入的信息之后……
验证用户输入的邮箱是否合法
定义(正则表达式)规则
创建表达式对象
使用正则对象进行验证
总体来说,只需要处理好上面的三个环节,就可以完成任务了.下面说下具我在代码中的具体实现
代码走起
生成定义的规则
1 | NSString *pattern = @"\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"; |
创建表达式对象
1 | NSRegularExpression *regular = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:NULL]; |
使用表达式对象进行验证
1 | NSArray *result = [regular matchesInString:@"要验证的字符串" options:0 range:NSMakeRange(0, self.length)]; |
最终方案
因为可能会经常用到类似的功能,比如验证密码强度,手机号码,QQ号码等,最终采用字符串分类来实现拓展
- NSString+ZDRegular.h
- NSString+ZDRegular.m
NSString+ZDRegular.h
1 | // NSString+ZDRegular.h // ZDKonw // // Created by Alexcai on 15/7/4. // Copyright (c) 2015年 zhidier. All rights reserved. // #import <Foundation/Foundation.h> @interface NSString (ZDRegular) /** * 判断是否合法邮件地址 */ - (BOOL)isEmail; @end |
NSString+ZDRegular.m
1 | // // NSString+ZDRegular.m // ZDKonw // // Created by Alexcai on 15/7/4. // Copyright (c) 2015年 zhidier. All rights reserved. // #import "NSString+ZDRegular.h" @implementation NSString (ZDRegular) - (BOOL)isEmail{ NSString *pattern = @"\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"; return [self matchesWithPattern:pattern]; } // 正则匹配方法 - (BOOL)matchesWithPattern:(NSString *)pattern{ NSRegularExpression *regular = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:NULL]; NSArray *result = [regular matchesInString:self options:0 range:NSMakeRange(0, self.length)]; return result.count > 0; } @end |
补充
关于正则表达式的常用元字符的使用说明
^
:匹配字符串开头
$
:匹配字符串结尾
\d
:匹配一位数字
.
:匹配换行之外的任意字符
*
:匹配0个或多个
?
:匹配0个或1个
+
:匹配至少1个或多个
\w
:匹配任意字母或数字
根据上面的正则表达式简单规则,我们可以在分类文件中继续写出一个验证手机号码合法性的方法
1 | // 验证手机号码是否合法 - (BOOL)isMobilePhone{ NSString *pattern = @"^1[3-9]\\d{9}$"; return [self matchesWithPattern:pattern]; } |
说明
本人尚在学习中,文中难免有误,欢迎大家指正