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