iOS中正则表达式的使用
2015-12-27 18:40
495 查看
// NSString *username = @"aa5656fjalf67ghBa8rt949aa3fa2s";
NSString *username = @"7pp7";
// 使用正则表达式步骤
// 创建正则表达式对象,定义规则
// 利用正则表达式来测试相应字符串
// 1 创建正则表达式
// Pattern: 样式/规则
// [] : 表示只会查找内部的一个字符即可
// NSString *pattern = @"[0123456789]";
// NSString *pattern = @"[0-9]";
// NSString *pattern = @"[a-zA-Z0-9]";
// NSString *pattern = @"\\d";
// 表示两个连在一起的数字
// NSString *pattern = @"[0-9][0-9]";
// NSString *pattern = @"\\d\\d";
// 表示三个连起来的数字
// NSString *pattern = @"\\d\\d\\d";
// NSString *pattern = @"\\d{3}";
// 三个数字和两个a连起来的结果
// NSString *pattern = @"\\d{3}a{2}";
// 匹配有两到四数字的个数
// NSString *pattern = @"\\d{2,4}";
// ? + *
/*
? : 0个或者1个
+ : 至少1个;
* : 0个或者多个
*/
// NSString *pattern = @"\\d+";
// 以数字开头 ({3}三个数字开头)
// NSString *pattern = @"^\\d{3}";
// 以数字结尾
// NSString *pattern = @"\\d{3}$";
// 以数字开头中间任意字符结尾
// NSString *pattern = @"^\\d[0-9A-Za-z]*\\d$";
NSString *pattern = @"^\\d.*\\d$";
// NSString *pattern = @"^\\d.\\d$"; // 中间放一个任意东西
// NSString *pattern = @"^\\dp*\\d$"; //中间任意个p;
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];
// 2 测试字符串
NSArray *resulets = [regex matchesInString:username options:0 range:NSMakeRange(0, username.length)];
NSLog(@"%zd",resulets.count);
#import <Foundation/Foundation.h>
@interface NSString (Extension)
- (BOOL)isQQ;
- (BOOL)isPhoneNumber;
- (BOOL)isIPAddress;
@end
// 匹配
- (BOOL)match:(NSString *)pattern {
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];
// 2 测试字符串
NSArray *resulets = [regex matchesInString:self options:0 range:NSMakeRange(0, self.length)];
return resulets.count > 0;
}
- (BOOL)isQQ {
// 5 到 11 位 不能以0开头 全部都是数字
NSString *pattern = @"^[1-9]\\d{4,10}$";
return [self match:pattern];
}
- (BOOL)isPhoneNumber {
// 1 全部是数字
// 2 11位
// 3 以13\15\18\17开头
NSString *pattern = @"^1[03578]\\d{9}$";
return [self match:pattern];
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *qq = @"694710165";
NSLog(@"%d",[qq isQQ]);
NSString *telphone = @"13344567890";
NSLog(@"%d",[telphone isPhoneNumber]);
NSString *ipAddress = @"45.34.90.255";
NSLog(@"%d",[ipAddress isIPAddress]);
NSString *str = @"#哈哈#[偷笑] http://foo.com/blah_blah #巴洛克#//http://foo.com/blah_blah @Ring菜:就#范德萨发生的#舍不得打[test] 就惯#急急急#着他吧[挖鼻屎]//@石日天:小拳头举起又放下了 说点啥好呢…… //@toto97:@崔西狮米咋不揍他#哈哈哈# http://foo.com/blah_blah";
// NSString *str = @"#呵呵呵#返回加快速度会尽#叶良辰#快发货看电视#好几件#发货了速度了恢复良好";
// 表情的规则
NSString *emotionPattern = @"\\[[0-9a-zA-Z\\u4e00-\\u9fa5]+\\]";
// @的规则
NSString *atPattern = @"@[0-9a-zA-Z\\u4e00-\\u9fa5]+";
// #话题#的规则
NSString *topicPattern = @"#[0-9a-zA-Z\\u4e00-\\u9fa5]+#";
// url链接的规则
NSString *urlPattern = @"\\b(([\\w-]+://?|www[.])[^\\s()<>]+(?:\\([\\w\\d]+\\)|([^[:punct:]\\s]|/)))";
NSString *pattern = [NSString stringWithFormat:@"%@|%@|%@|%@", emotionPattern, atPattern, topicPattern, urlPattern];
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];
NSArray *results = [regex matchesInString:str options:0 range:NSMakeRange(0, str.length)];
// 遍历所有的匹配结果
for (NSTextCheckingResult *result in results) {
NSLog(@"%@ %@",NSStringFromRange(result.range),[str substringWithRange:result.range]);
}
}
return 0;
}
- (BOOL)isIPAddress {
// 1-3个数字.1-3个数字.1-3个数字.1-3个数字
NSString *partern = @"^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$";
return [self match:partern];
}
@end
NSString *username = @"7pp7";
// 使用正则表达式步骤
// 创建正则表达式对象,定义规则
// 利用正则表达式来测试相应字符串
// 1 创建正则表达式
// Pattern: 样式/规则
// [] : 表示只会查找内部的一个字符即可
// NSString *pattern = @"[0123456789]";
// NSString *pattern = @"[0-9]";
// NSString *pattern = @"[a-zA-Z0-9]";
// NSString *pattern = @"\\d";
// 表示两个连在一起的数字
// NSString *pattern = @"[0-9][0-9]";
// NSString *pattern = @"\\d\\d";
// 表示三个连起来的数字
// NSString *pattern = @"\\d\\d\\d";
// NSString *pattern = @"\\d{3}";
// 三个数字和两个a连起来的结果
// NSString *pattern = @"\\d{3}a{2}";
// 匹配有两到四数字的个数
// NSString *pattern = @"\\d{2,4}";
// ? + *
/*
? : 0个或者1个
+ : 至少1个;
* : 0个或者多个
*/
// NSString *pattern = @"\\d+";
// 以数字开头 ({3}三个数字开头)
// NSString *pattern = @"^\\d{3}";
// 以数字结尾
// NSString *pattern = @"\\d{3}$";
// 以数字开头中间任意字符结尾
// NSString *pattern = @"^\\d[0-9A-Za-z]*\\d$";
NSString *pattern = @"^\\d.*\\d$";
// NSString *pattern = @"^\\d.\\d$"; // 中间放一个任意东西
// NSString *pattern = @"^\\dp*\\d$"; //中间任意个p;
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];
// 2 测试字符串
NSArray *resulets = [regex matchesInString:username options:0 range:NSMakeRange(0, username.length)];
NSLog(@"%zd",resulets.count);
#import <Foundation/Foundation.h>
@interface NSString (Extension)
- (BOOL)isQQ;
- (BOOL)isPhoneNumber;
- (BOOL)isIPAddress;
@end
// 匹配
- (BOOL)match:(NSString *)pattern {
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];
// 2 测试字符串
NSArray *resulets = [regex matchesInString:self options:0 range:NSMakeRange(0, self.length)];
return resulets.count > 0;
}
- (BOOL)isQQ {
// 5 到 11 位 不能以0开头 全部都是数字
NSString *pattern = @"^[1-9]\\d{4,10}$";
return [self match:pattern];
}
- (BOOL)isPhoneNumber {
// 1 全部是数字
// 2 11位
// 3 以13\15\18\17开头
NSString *pattern = @"^1[03578]\\d{9}$";
return [self match:pattern];
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *qq = @"694710165";
NSLog(@"%d",[qq isQQ]);
NSString *telphone = @"13344567890";
NSLog(@"%d",[telphone isPhoneNumber]);
NSString *ipAddress = @"45.34.90.255";
NSLog(@"%d",[ipAddress isIPAddress]);
NSString *str = @"#哈哈#[偷笑] http://foo.com/blah_blah #巴洛克#//http://foo.com/blah_blah @Ring菜:就#范德萨发生的#舍不得打[test] 就惯#急急急#着他吧[挖鼻屎]//@石日天:小拳头举起又放下了 说点啥好呢…… //@toto97:@崔西狮米咋不揍他#哈哈哈# http://foo.com/blah_blah";
// NSString *str = @"#呵呵呵#返回加快速度会尽#叶良辰#快发货看电视#好几件#发货了速度了恢复良好";
// 表情的规则
NSString *emotionPattern = @"\\[[0-9a-zA-Z\\u4e00-\\u9fa5]+\\]";
// @的规则
NSString *atPattern = @"@[0-9a-zA-Z\\u4e00-\\u9fa5]+";
// #话题#的规则
NSString *topicPattern = @"#[0-9a-zA-Z\\u4e00-\\u9fa5]+#";
// url链接的规则
NSString *urlPattern = @"\\b(([\\w-]+://?|www[.])[^\\s()<>]+(?:\\([\\w\\d]+\\)|([^[:punct:]\\s]|/)))";
NSString *pattern = [NSString stringWithFormat:@"%@|%@|%@|%@", emotionPattern, atPattern, topicPattern, urlPattern];
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];
NSArray *results = [regex matchesInString:str options:0 range:NSMakeRange(0, str.length)];
// 遍历所有的匹配结果
for (NSTextCheckingResult *result in results) {
NSLog(@"%@ %@",NSStringFromRange(result.range),[str substringWithRange:result.range]);
}
}
return 0;
}
- (BOOL)isIPAddress {
// 1-3个数字.1-3个数字.1-3个数字.1-3个数字
NSString *partern = @"^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$";
return [self match:partern];
}
@end
相关文章推荐
- 【iOS】自己定义TabBarController
- iOS --- 多线程之GCD
- iOS ---oc和js交互2
- iOS ---oc和js交互
- ios项目中引用其他项目复习
- iOS 提高tableView 性能的优化
- 芒果iOS开发之Project/Users/用户名/.../xxx.xcodeproj cannot be open because the project file cannot be parsed
- iOS 删除NSString中特定字符
- IOS 基础动画Core Animation
- 芒果iOS开发之 CONFLICT (content): AutoMatic merge failed;fix conflicts and then commit the result.
- 芒果iOS开发之Merge branch 'master' of XXX Please enter a commit message to explain why this merge
- iOS开发之数据存储(偏好设置)
- IOS九宫格设计源码(外加添加删除功能)
- iOS开发之数据的写入与读取(plist存储)
- iOS 代码规范
- iOS之有关于git的命令行
- IOS常用延时操作
- Habber - IOS XMPP 客户端 教程 (续)对方输入状态显示
- 芒果iOS开发之git新手常用操作
- iOS 日期格式化, NSDateFormatter,把服务器返回的时间,格式化为时间戳