iOS开发_常用的正则表达式
2015-08-05 09:15
537 查看
实现正则表达式匹配的方式
常用的正则表达式
1.利用NSPredicate(谓词)匹配
例如匹配有效邮箱:
使用 NSPredicate 的字符串评估功能来进行正则表达式处理,其比较关键字为:MATCHES。谓词匹配比较灵活,但是需要了解谓词的相关知识。
2.利用rangeOfString: options: 直接查找
options中设定NSRegularExpressionSearch表示利用正则表达式匹配,会返回第一个匹配结果的位置。
3.使用NSRegularExpression(正则表达式类)匹配
使用系统的正则表达式类(NSRegularExpression)会返回匹配的多个结果。
小结:
第一种方式需要掌握NSPredicate的用法,需要查阅Apple API或者相关技术文档,如果只考虑第一个匹配的结果,第二种方式较为简单,如果需要匹配多个结果,同时匹配多次,第三种方式效率会更高。
常用的正则表达式
实现正则表达式匹配的方式
iOS中有三种方式可以实现正则表达式的匹配。1.利用NSPredicate(谓词)匹配
例如匹配有效邮箱:
NSString *email = @"hellochina@gmail.com"; // 邮箱的正则表达式 NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; // 创建并返回一个由 给定格式创建的新的字符串 形成的新谓词, 并解析结果. NSPredicate *emailPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; // 返回布尔值, 给定对象是否与接受者的条件匹配 NSLog(@"%d", [emailPredicate evaluateWithObject:email]);
使用 NSPredicate 的字符串评估功能来进行正则表达式处理,其比较关键字为:MATCHES。谓词匹配比较灵活,但是需要了解谓词的相关知识。
2.利用rangeOfString: options: 直接查找
NSString *email = @"hellochina@gmail.com"; NSRange range = [email rangeOfString:@"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}" options:NSRegularExpressionSearch]; // NSNotFound, 常量, 表明一项请求无法找到或者不存在的值。 if (range.location != NSNotFound) { // 在给定的范围内返回一个包含接受者特点的字符串对象 NSLog(@"%@", [email substringWithRange:range]); }
options中设定NSRegularExpressionSearch表示利用正则表达式匹配,会返回第一个匹配结果的位置。
3.使用NSRegularExpression(正则表达式类)匹配
NSString *email = @"hellochina@gmail.com"; NSRegularExpression *emailRegex = [NSRegularExpression regularExpressionWithPattern:@"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}" options:NSRegularExpressionCaseInsensitive error:nil]; NSTextCheckingResult *result = [emailRegex firstMatchInString:email options:0 range:NSMakeRange(0, [email length])]; if (result) { NSLog(@"%@", [email substringWithRange:result.range]); }
使用系统的正则表达式类(NSRegularExpression)会返回匹配的多个结果。
小结:
第一种方式需要掌握NSPredicate的用法,需要查阅Apple API或者相关技术文档,如果只考虑第一个匹配的结果,第二种方式较为简单,如果需要匹配多个结果,同时匹配多次,第三种方式效率会更高。
常用的正则表达式
// 验证邮箱 + (BOOL) verifyEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *emailPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; return [emailPredicate evaluateWithObject:email]; } // 验证手机号码 + (BOOL) verifyMobilePhone:(NSString *)mobilePhone { NSString *phoneRegex = @"^((13[0-9])|(15[^4,\\D])|(18[0,0-9]))\\d{8}$"; NSPredicate *phonePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex]; return [phonePredicate evaluateWithObject:mobilePhone]; } // 验证用户名 + (BOOL) verifyUserName:(NSString *)username { NSString *userNameRegex = @"^[A-Za-z0-9]{6,20}+$"; NSPredicate *userNamePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",userNameRegex]; return [userNamePredicate evaluateWithObject:username]; } // 验证密码 + (BOOL) verifyPassword:(NSString *)password { NSString *passwordRegex = @"^[a-zA-Z0-9]{6,20}+$"; NSPredicate *passwordRegexPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",passwordRegex]; return [passWordPredicate evaluateWithObject:password]; } // 验证昵称 + (BOOL) verifyNickname:(NSString *)nickname { NSString *nicknameRegex = @"^[\u4e00-\u9fa5]{4,8}$"; NSPredicate *nicknamePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",nicknameRegex]; return [nicknamePredicate evaluateWithObject:nickname]; } // 验证***号 + (BOOL) verifyIdentityCard:(NSString *)identityCard { BOOL flag; if (identityCard.length <= 0) { flag = NO; return flag; } NSString *idRegex = @"^(\\d{14}|\\d{17})(\\d|[xX])$"; NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",idRegex]; return [identityCardPredicate evaluateWithObject:identityCard]; } // 验证字母和数字 + (BOOL)verifyFigureAndLetter:(NSString *)string { NSString *regular = @"^[A-Za-z0-9]+$"; NSPredicate *numberAndLetterTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regular]; return [numberAndLetterTest evaluateWithObject:string]; }
相关文章推荐
- iOS开发基础之用三种不同方式创建Table View应用
- iOS项目的完整重命名方法图文教程
- iOS证书与推送通知证书制作过程遇到的问题
- IOS中的代理模式
- iOS开发基础之用三种不同方式创建Table View应用
- 58.iOS6 7 cell适配 tableView背景
- iOS中注册功能的体验探究
- iOS 9应用开发教程之iOS 9新特性
- iOS 8设置CLLocation授权
- iOS 8应用内跳转到系统设置
- IOS 如何实现滑动返回上一页
- iOS 9之应用内搜索(CoreSpotlight)API
- iOS开发中NSDictionary操作大全
- ios对于枚举的使用
- iOS中的数组操作大全
- iOS中如何获取用户的触摸操作
- iOS中添加Cordova到已存在的Xcode 工程
- iOS中的字符串操作大全
- iOS设计模式 - 代理
- iOS开发概述-12.手势处理