文档章节

iOS 之常用的正则表达式

GLAlanTong
 GLAlanTong
发布于 2017/01/14 20:34
字数 562
阅读 6
收藏 0

iOS 之常用的正则表达式

iOS 之常用的正则表达式

在平时的开发中,我们会经常会用到正则去判断,下面是一些我经常使用到的,如有不足,欢迎大家补充

1.创建一个公共的类

//数字

+ (BOOL) validateNumber:(NSString*)number;

//金额

+ (BOOL) validateMoney:(NSString*)money;

//邮箱

+ (BOOL) validateEmail:(NSString *)email;

//手机号码验证

+ (BOOL) validateMobile:(NSString *)mobile;

//车牌号验证

+ (BOOL) validateCarNo:(NSString *)carNo;

//车型

+ (BOOL) validateCarType:(NSString *)CarType;

//用户名

+ (BOOL) validateUserName:(NSString *)name;

//密码

+ (BOOL) validatePassword:(NSString *)passWord;

//昵称

+ (BOOL) validateNickname:(NSString *)nickname;

//身份证号

+ (BOOL) validateIdentityCard: (NSString *)identityCard;

 

实现方法 

+ (BOOL) validateMoney:(NSString*)money{

NSString *moneyRegex = @"^[0-9]+(.[0-9]{2})?$";

NSPredicate *moneyTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", moneyRegex];

return [moneyTest evaluateWithObject:money];

}

//数字

+ (BOOL) validateNumber:(NSString*)number

{

BOOL res = YES;

NSCharacterSet* tmpSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];

int i = 0;

while (i < number.length) {

NSString * string = [number substringWithRange:NSMakeRange(i, 1)];

NSRange range = [string rangeOfCharacterFromSet:tmpSet];

if (range.length == 0) {

res = NO;

break;

}

i++;

}

return res;

}

//邮箱

+ (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开头,八个 \d 数字字符

//2015/08/25 添加14,17开头

/*

三大运营商用户号段:

中国移动号段:134、135、136、137、138、139、150、151、152、157、158、159、147、182、183、184、187、188、1705[1]  、178

中国联通号段:130、131、132、145(145属于联通无线上网卡号段)、155、156、185、186 、176、1709[1]  、176

中国电信号段:133 、153 、180 、181 、189、1700[1]  、177

*/

NSString *phoneRegex = @"^((13[0-9])|(14[0-9])|(15[^4,\\D])|(17[0,0-9])|(18[0,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];

}

欢迎大家补充哈

© 著作权归作者所有

GLAlanTong
粉丝 3
博文 21
码字总数 15640
作品 0
广州
程序员
私信 提问
iOS中3种正则表达式的使用与比较

之前我在博文中介绍过iOS中自带正则表达式的使用( 传送门),后来我发现其实iOS中有三种方式来实现正则表达式的匹配。现在将他们都记录在这里: 1.利用NSPredicate(谓词)匹配 例如匹配有效...

独-奏
2014/02/12
0
1
强大的iOS开发必备工具

做iOS应用开发的,没有这些工具怎么行,强大的iOS开发必备工具!需要的速来拿! 1、ShareSDK 下载链接:http://sharesdk.cn/Download 软件首页:http://sharesdk.cn/ 分类:程序开发 功能强大...

拉偶有所依
2014/12/06
1K
10
有用的HTML5 pattern属性

做手机页面时,遇到数字输入的键盘的问题,之前的做法只是一刀切的使用 type="tel",不过一直觉得九宫格的电话号码键盘上的英文字母太碍事了。于是想要尝试其它的实现方案,最终的结论却令人...

东东笔记
2018/07/27
0
0
NSRegExNamedCaptureGroup 1.0 发布,Cocoa 正则表达式的 NCG 扩展库

NSRegExNamedCaptureGroup 1.0 已发布,更新如下: 库代码已改用纯 Swift 编写 增添了对 tvOS 和 watchOS 的支持 这是什么 NSRegExNamedCaptureGroup 使用 Swift 语言开发,通过直观的编程接...

开源中国真理部部长
2017/07/06
526
2
删除源文件中的注释

http://www.oschina.net/bbs/thread/18227里提到删除源文件中注释的问题,我想,既然所有的支持源代码高亮的编辑器和编译器都可以识别出注释,那就一定有办法能删除源文件中的注释.最近新开了编...

周翼翼
2011/04/29
660
13

没有更多内容

加载失败,请刷新页面

加载更多

系列一、入门教程web端实现地图功能

废话不多说,社会我多多 实现步骤如下 第一步、在高德api注册账户 搜索高德api点击进入官网,自己注册一个账号,你懂得怎么注册撒 点击进入下图画框位置,来到官网api入门教程 第二步、按照以...

我叫小糖主
27分钟前
12
0
springboot统一校验validator实现

第一步: pom.xml需引入spring-boot-start-web依赖,其中包含validator框架包 <!--Spring Boot Web依赖--><dependency> <groupId>org.springframework.boot</groupId> <artifact......

zzx10
28分钟前
3
0
vue组件系列-预览、放大、缩小、旋转

这个用的是别人的,如果有问题,估计改起来会很纠结。 安装 npm install v-viewer --save 卸载 npm uninstall v-viewer 注册 在main.js中 // The Vue build version to load with the `impor...

轻轻的走过
30分钟前
3
0
Taro Input输入内容无法绑定state问题

在onInput事件中,返回内容,返回内容即是输入框内容 例如只能输入一个小数点: <Input type='digit' placeholder='带小数点的数字键盘' value={this.state.advance} onInput={ e => this.ch......

步步登高
31分钟前
2
0
Windows10远程连接CentOS7(搭建Xrdp服务器)

Windows10远程连接CentOS7(搭建Xrdp服务器) 听语音 浏览:0 | 更新:2018-02-11 12:56 1 2 3 4 5 6 7 分步阅读 通过VNC或Xdmcp的方式远程连接linux图形桌面,虽然都很方便,但有个缺点就是...

linjin200
31分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部