使用正则表达式的方法

2016-01-02  本文已影响78人  UILabelkell

1、创建一个正则表达式对像:定义规则

2、利用正则表达式对像 来测试 相应 的字符串

如下例子:
<pre> NSString *username = @"5347858h7";
NSString *pattern = @"[0-9]";
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];

// 2.测试字符串 NSArray *results = [regex matchesInString:username options:0 range:NSMakeRange(0, username.length)];

Pattern : 样式\规则

NSString *str = @"#呵呵呵#[偷笑] http://foo.com/blah_blah #解放军#//http://foo.com/blah_blah @Ring花椰菜:就#范德萨发生的#舍不得打[test] 就惯#急急急#着他吧[挖鼻屎]//@崔西狮:小拳头举起又放下了 说点啥好呢…… //@toto97:@崔西狮 蹦米咋不揍他#哈哈哈# http://foo.com/blah_blah";

/** 1.判断字符串是否符合某个特定规则 * 判断某个字符串是否为QQ号码\电话号码\邮箱

2.截取字符串中符合某个特定规则的内容 * 截取@"#呵呵呵#[偷笑]5345 http://foo.com/blah_blah #解放军# 58937985"的所有话题\表情\链接 */

// 1.创建正则表达式
// NSString *pattern = @"[a-zA-Z]{1,}"; //
NSString *pattern = @"[a-zA-Z]+";
// 表情的规则 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]|/)))";

// | 匹配多个条件,相当于or\或 NSString *pattern = [NSString stringWithFormat:@"%@|%@|%@|%@", emotionPattern, atPattern, topicPattern, urlPattern];

NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];

// 2.测试字符串 NSArray *results = [regex matchesInString:str options:0 range:NSMakeRange(0, str.length)]; //

3.遍历结果 for (NSTextCheckingResult *result in results) {
NSLog(@"%@ %@", NSStringFromRange(result.range),
[str substringWithRange:result.range]);
}
}
</pre>

上一篇下一篇

猜你喜欢

热点阅读