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+)?$  //值类型正则表达式

时间: 2024-10-22 00:16:17

OC - 正则表达式 - RegexKitLite的相关文章

OC正则表达式的简单使用

最近落实工作的事情后终于有时间可以写博客了 今天带来的是正则表达式的一般使用方法 我们平时在对字符串构成就行判断的时候,一般利用其单个字符进行条件判断 但如果判断的条件稍微复杂一点,那对单个字符判断就变得相当麻烦,因此这里就引入了正则表达式的概念 个人将正则表达式理解是:把多个字符串的集合为一个表达式写出 OC中一般正则表达式的使用方法为2步 1.创建一个正则表达式对象 2.利用正则表达式来测试对应的字符串 例如 NSString *checkString = @"a34sd231";

iOS开发 - 正则表达式 RegexKitLite框架

准备工作 使用RegexKitLite正则表达式需要以下工作: 1.RegexKitLite官方网址(内含使用教程):http://regexkit.sourceforge.net/RegexKitLite 2.下载地址:http://downloads.sourceforge.net/regexkit/RegexKitLite-4.0.tar.bz2 3.将RegexKitLite.h和RegexKitLite.m引入到工程中. 4.引入"libicucore.dylib"框架 5.

一些 iOS 常用的第三方库

网络通信 AFNetworking 轻量级的通讯类库,使用非常简单.建议更新到最新版,前几天看新闻说之前有个逻辑性的 bug https://github.com/AFNetworking/AFNetworking MKNetworkKit 最近做的不错的一个通讯类库,具有 AFNetworking 和 ASIHTTPRequest双方的优点,甚至功能更丰富一些,但是本人还没有使用过. https://github.com/MugunthKumar/MKNetworkKit ASIHTTPReq

(一一〇)正则表达式的基本使用与RegexKitLite的使用

正则表达式常常用于匹配关键字,下面先介绍基本语法. [基本语法] ①中括号表示满足其中之一即可,例如[abc],则这个位置可以是a.b.c中任意一个. ②在中括号中,可以通过-连接范围,例如a-z:多个范围之间并列不需要任何分隔符,例如[a-zA-Z] ③表示重复次数用{x},例如[a-z]{2}表示连续2次:表示重复次数的范围可用{x,y}. ④\\d表示数字. ⑤正则表达式默认的是贪婪匹配,例如[a-z]{2,4},如果出现类似abcde2ab这样的字符串,abcd满足最大长度4,因此会作为

OC利用正则表达式获取网络资源(网络爬虫)

在开发项目的过程,很多情况下我们需要利用互联网上的一些数据,在这种情况下,我们可能要写一个爬虫来爬我们所需要的数据.一般情况下都是利用正则表达式来匹配Html,获取我们所需要的数据.一般情况下分以下三步:1.获取网页的html2.利用正则表达式,获取我们所需要的数据3.分析,使用获取到的数据,(例如,保存到数据库) 接下来我们分析代码:1.获取网页的html 对于一些网页,不需要提交Post提交数据时,我们可以简单的利用NSURL类来获取我们所需要的html,交将其转换中kCFStringEnc

oc常用正则表达式

常用的第三方正则库: http://regexkit.sourceforge.net/RegexKitLite/index.html 匹配中文字符的正则表达式: [\u4e00-\u9fa5]评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^\x00-\xff]评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:\n\s*\r评注:可以用来删除空白行 匹配HTML标记的正则表达式:<(\S*?)[^>]

iOS 使用正则表达式库RegexKitLite的问题

因为RegexKitLite使用ICU库,所以需要动态链接到/usr/lib/libicucore.dylib库当中去,否则你会得到错误.具体Dynamically linked to /usr/lib/libicucore.dylib方法如下 1.进入菜单Project->Edit Project Settings2.在搜索框内输入linker搜索,找到”Other Linker Flags”选项.3. 加入一个新的标签,名为-licucore. 补充:ICU(International Co

iOS开发——网络使用技术OC篇&amp;网络爬虫-使用正则表达式抓取网络数据

网络爬虫-使用正则表达式抓取网络数据 关于网络数据抓取不仅仅在iOS开发中有,其他开发中也有,也叫网络爬虫,大致分为两种方式实现 1:正则表达 2:利用其他语言的工具包:java/Python 先来看看网络爬虫的基本原理: 一个通用的网络爬虫的框架如图所示: 网络爬虫的基本工作流程如下: 1.首先选取一部分精心挑选的种子URL: 2.将这些URL放入待抓取URL队列: 3.从待抓取URL队列中取出待抓取在URL,解析DNS,并且得到主机的ip,并将URL对应的网页下载下来,存储进已下载网页库中.

iOS中使用RegexKitLite来试用正则表达式

转:http://blog.csdn.net/nullcn/article/details/6338592 准备工作,下载RegexKitLite 软件包,解压后有2个文件,需要加载到project中. 然后还要加载framework libicucore.dylib ,因为RegexKitLite是调用这个里面的API,苹果规定过不能使用私有的api和没有发布的api.实际上RegexKitLite对NSString做了扩展,目前只支持NSString,对我来说也够了... 基本使用的例子(更