OC - 正则表达式 - RegexKitLite

正则表达式使用步骤:

1. 创建正则表达式对象, 设置约束条件;

1 NSString *pattern = @"\\d{1,3}";
2 NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];

2. 测试字符串

1 // 2. 测试字符串
2 NSArray *results = [regex matchesInString:username options:0 range:NSMakeRange(0, username.length)];
3 NSLog(@"%zd", results.count);

3. 特殊符号详解:

  • [0-9a-zA-Z]{2,6}?+*

"[]"代表一个范围, 0-9之间或者a-z之间或者A-Z之间的字符;

"{}"代表连续字符的个数范围, 连续2 - 6个字母或者数字;

"\\d"相当于[0-9];

"?"代表 0个或者1个;

"+"代表 至少1个;

"*"代表任意多个;

  • @"^\\d[0-9a-zA-Z]*\\d$" 相当于 @"^\\d.*\\d$"

^ : 以数字开头;

$ : 以数字结尾

. : 除换行符以外的任意字符;

 

4. 实际应用

 1  NSString *text = @"[哈哈]// http://www.baidu.com 192.168.1.1; @浪小花 #解放军# WWW.baidu.com, [ni]百度";
 2         /**
 3          *  使用正则表达式的步骤
 4          1. 创建一个正则表达式对象, 定义规则
 5          
 6          2. 利用正则表达式对象 来测试 相应的字符串
 7          */
 8         
 9         // 1. 创建正则表达式
10         // 规则: [0-9], 查找0-9之间的数字; 相当于 \d (注意\转义字符)
11         // [a-z]{3,6}: 查找 连续3个到6个 的小写字母个数;
12         //
13         NSString *pattern = @"^\\d[0-9a-zA-Z]*\\d$";
14         // 1.1 QQ
15         pattern = @"^[1-9]\\d{4,10}$";
16         
17         // 1.2 phoneNum
18         pattern = @"^1[3578]\\d{9}$";
19         
20         // 1.3 ip
21         pattern = @"\\d+\\.\\d+\\.\\d+\\.\\d+";
22         
23         // 1.4 判断汉字[]
24         pattern = @"\\[[a-zA-Z\\u4e00-\\u9fa5]+\\]";
25         
26         // 1.5 @
27         pattern = @"@[0-9a-zA-Z\\u4e00-\\u9fa5]+";
28         
29         // 1.6 #
30         pattern = @"\\#[a-zA-Z\\u4e00-\\u9fa5]+\\#";
31         
32         // 1.7 链接 url
33         pattern = @"\\b(([\\w-]+://?|www[.])[^\\s()<>]+(?:\\([\\w\\d]+\\)|([^[:punct:]\\s]|/)))";
34         
35         pattern = @"\\[[a-zA-Z\\u4e00-\\u9fa5]+\\]|@[0-9a-zA-Z\\u4e00-\\u9fa5]+|\\#[a-zA-Z\\u4e00-\\u9fa5]+\\#|\\b(([\\w-]+://?|www[.])[^\\s()<>]+(?:\\([\\w\\d]+\\)|([^[:punct:]\\s]|/)))";
36         
37         NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];
38         // ? + *
39         // ?: 0个或者1个
40         // +: 至少1个
41         // *: 0个或者多个(任意)
42         // ^: 开头
43         // @"^\\d[0-9a-zA-Z]*\\d$" 以数字开头, 以数字结尾, 中间是任意多个数字或者字母;
44         
45         // 2. 测试字符串
46         NSArray *results = [regex matchesInString:text options:0 range:NSMakeRange(0, text.length)];
47         for (NSTextCheckingResult *result in results) {
48             NSLog(@"%@ %@", NSStringFromRange(result.range), [text substringWithRange:result.range]);
49         }

 

5. 常用的正则表达式

"^\d+$"  //非负整数(正整数 + 0) 
"^[0-9]*[1-9][0-9]*$"  //正整数 
"^((-\d+)|(0+))$"  //非正整数(负整数 + 0) 
"^-[0-9]*[1-9][0-9]*$"  //负整数 
"^-?\d+$"    //整数 
"^\d+(\.\d+)?$"  //非负浮点数(正浮点数 + 0) 
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮点数 
"^((-\d+(\.\d+)?)|(0+(\.0+)?))$"  //非正浮点数(负浮点数 + 0) 
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负浮点数 
"^(-?\d+)(\.\d+)?$"  //浮点数 
"^[A-Za-z]+$"  //由26个英文字母组成的字符串 
"^[A-Z]+$"  //由26个英文字母的大写组成的字符串 
"^[a-z]+$"  //由26个英文字母的小写组成的字符串 
"^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串 
"^\w+$"  //由数字、26个英文字母或者下划线组成的字符串 
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"    //email地址 
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$"  //url
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/   //  年-月-日
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/   // 月/日/年
"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$"   //Emil
"(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?"     //电话号码
"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$"   //IP地址

^([0-9A-F]{2})(-[0-9A-F]{2}){5}$   //MAC地址的正则表达式
^[-+]?\d+(\.\d+)?$  //值类型正则表达式

posted @ 2016-01-29 18:38  guangleijia  阅读(372)  评论(0编辑  收藏  举报