http://blog.csdn.net/zzfsuiye/article/details/6631466(转--讲得不错)

最 近做一个项目遇到从NSString中获取当中的IP地址使用 RegexKitLite第三库遇到的问题. 首先下载 RegexKitLite 导入 RegexKitLite.h 和RegexKitLite.m文件到项目中,然后导入系统自带的 libicucore.dylib.

  
   这里就讲解RegexKitLite中的两个方法:
    
1.-(NSString *)stringByMatching:(NSString *)regex;
这个方法是传一个正则表达式进去,返回匹配的NSString回来
2.- (NSString *)stringByMatching:(NSString *)regex capture:(NSInteger)capture;
这个方法和前面的那个多了一个caputre的参数,这个参数带的是一个int值。使用这个方法返回的是ip地址的某一段数据
看代码:
NSString
*string = @"Connection: closeX-Powered-By:
PHP/5.2.17Expires:224.4.226.12 Mon, 26 Jul 1997 05:00:00
GMTCache-Control: nocacPragma: no-cacheLocation:";
//下面这两个正则表格式都可以查询出IP
NSString
*regex =
@"(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])";
NSString * regex = @"((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)\\.){3}(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|[1-9])";
    NSString *port = [string stringByMatching:regex];
    NSLog(@"port = %@",port);
这里调用第一中方法打印的是:224.4.226.12 可以正确的查找出来
    如果调用第二种方法   NSString *port = [string stringByMatching:regex capture:1];
打印出来的是:224.  显示的是第一段的数字.如果是2的话,打印是4. 如果超出了总长度程序会崩溃
第一次写,希望对正在寻找这个东西的朋友有帮助.
 
验证邮箱正确性:
1.赢文用户注册功能模块中需要检查邮箱合法性,这里分享一下两种实现方法。
方法一)RegexKitLite
1)下载地址:http://regexkit.sourceforge.net/RegexKitLite/index.html
2)解压后,将NSString-HexConversion.h/NSString-HexConversion.m添加到工程中
3)工程中添加libicucore.dylib frameworks。
4)用法:
NSString *sEmail = @”he.wenhao@163.com”;
[sEmail isMatchedByRegex:@"\\b([a-zA-Z0-9%_.+\\-]+)@([a-zA-Z0-9.\\-]+?\\.[a-zA-Z]{2,6})\\b”];
返回YES,表示合法
5)常用的一些正则表达式:具体参考官方文档http://regexkit.sourceforge.net/RegexKitLite/index.html
2.方法二)字符串操作
+(BOOL)validateEmail:(NSString*)email
{
if((0 != [email rangeOfString:@"@"].length) &&
(0 != [email rangeOfString:@"."].length))
{
NSCharacterSet* tmpInvalidCharSet = [[NSCharacterSet alphanumericCharacterSet] invertedSet];
NSMutableCharacterSet* tmpInvalidMutableCharSet = [[tmpInvalidCharSet mutableCopy] autorelease];
[tmpInvalidMutableCharSet removeCharactersInString:@"_-"];
//使用compare option 来设定比较规则,如
//NSCaseInsensitiveSearch是不区分大小写
//NSLiteralSearch 进行完全比较,区分大小写
//NSNumericSearch 只比较定符串的个数,而不比较字符串的字面值
NSRange range1 = [email rangeOfString:@"@"
options:NSCaseInsensitiveSearch];
//取得用户名部分
NSString* userNameString = [email substringToIndex:range1.location];
NSArray* userNameArray   = [userNameString componentsSeparatedByString:@"."];

for(NSString* string in userNameArray)
{
NSRange rangeOfInavlidChars = [string rangeOfCharacterFromSet: tmpInvalidMutableCharSet];
if(rangeOfInavlidChars.length != 0 || [string isEqualToString:@""])
return NO;
}
NSString *domainString = [email substringFromIndex:range1.location+1];
NSArray *domainArray   = [domainString componentsSeparatedByString:@"."];
for(NSString *string in domainArray)
{
NSRange rangeOfInavlidChars=[string rangeOfCharacterFromSet:tmpInvalidMutableCharSet];
if(rangeOfInavlidChars.length !=0 || [string isEqualToString:@""])
return NO;
}
return YES;
}
else // no ”@” or ”.” present
return NO;
}

表5.懒惰限定符
代码/语法 说明
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
 
代码/语法 说明
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou]

匹配除了aeiou这几个字母以外的任意字符

RegexKitLite 正则表达式的更多相关文章

  1. [IOS]开源库RegexKitLite正则表达式的使用

    1.去RegexKitLite下载类库,解压出来会有一个例子包及2个文件,其实用到的就这2个文件,添加到工程中. 2.工程中添加libicucore.dylib frameworks. 友情提醒:一般 ...

  2. iOS RegexKitLite 提取匹配的内容

            使用RegexKitLite正则表达式需要以下工作: 1.RegexKitLite官方网址(内含使用教程):http://regexkit.sourceforge.net/RegexK ...

  3. 开源 iOS 项目分类索引大全 - 待整理

    开源 iOS 项目分类索引大全 GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助 系统基础库 Category/Util sstoolkit 一套Cate ...

  4. iOS-常用的第三方框架的介绍

    写iOS 程序的时候往往需要很多第三方框架的支持,可以大大减少工作量,讲重点放在软件本身的逻辑实现上. GitHub 里面有大量优秀的第三方框架,而且 License 对商业很友好.一下摘录一下几乎每 ...

  5. IOS一些高效的第三方框架库

    MBProgressHUD ——进展指示符库 苹果的应用程序一般都会用一种优雅的,半透明的进度显示效果,不过这个API是不公开的,因此你要是用了,很可能被清除出AppStore.而 MBProgres ...

  6. 史上最全的常用iOS的第三方框架

    文章来源:http://blog.csdn.net/sky_2016/article/details/45502921 图像: 1.图片浏览控件MWPhotoBrowser       实现了一个照片 ...

  7. 常用iOS的第三方框架

    图像:1.图片浏览控件MWPhotoBrowser       实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等 ...

  8. GitHub 里面有大量优秀的第三方框架

    写iOS 程序的时候往往需要很多第三方框架的支持,可以大大减少工作量,讲重点放在软件本身的逻辑实现上. GitHub 里面有大量优秀的第三方框架,而且 License 对商业很友好.一下摘录一下几乎每 ...

  9. iOS开源 框架

    UI界面类项目: Panoramagl ——720全景展示 Panorama viewer library foriPhone, iPad and iPod touch MBProgressHUD — ...

随机推荐

  1. mysql str_to_date字符串转换为日期

    mysql内置函数,在mysql里面利用str_to_date()把字符串转换为日期. 示例:分隔符一致,年月日要一致 select str_to_date('2008-4-2 15:3:28','% ...

  2. 【北京站】详解Visual Studio 2013:开发iOS及android应用!现场图集

    现场图集: 活动介绍地址:http://huiyi.csdn.net/module/meeting/meeting/info/660/biz

  3. 25款漂亮的 WordPress 杂志主题

    WordPress是一个免费和开源博客工具和一个内容管理系统(CMS)基于 PHP 和 MySQL,它运行在一个 Web 托管服务.每个月的 WordPress 主题是由开发人员,其中用户喜欢使用 W ...

  4. HTML去掉网页IE滚动条

    做了一个页面,与桌面分辨率一样大小,但是在IE全屏(F11)下却显示有滚动条,此教程由软件自学网首发,而火狐确没有.怎么样去掉IE滚动条呢?其实有一个属性就可以解决. 方法1:直接在body里面加上属 ...

  5. eclipse常用10个快捷键[转载]

    转载自:http://www.jb51.net/softjc/139467.html

  6. sql 如何过滤重复记录

    distinct : select distinct ID from table1

  7. TableLayout练习

    <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android=" ...

  8. 迭代输出Map和List<Map<String,Object>>的方法

    一.Map<String,Object> String:key的类型 Object:value的类型,value可能是String,或者int类型,什么类型都可以 对于Map接口来说,本身 ...

  9. IOC(控制反转和依赖注入)之Autofac

    Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上也是很高的.于是,今天抽空研究了下它.下载地址:http://co ...

  10. IT公司100题-21-输入n和m,和等于m

    问题描述: 输入两个整数n 和m,从数列1,2,3,…,n 中随意取几个数, 使其和等于m,将所有可能的组合都打印出来.   分析: 利用递归的思路,对于1,2,3,…,n 中的任意一个数,要么选,要 ...