OC正则表达式的使用
OC中一般正则表达式的使用方法为2步
1.创建一个正则表达式对象
2.利用正则表达式来测试对应的字符串
例如
NSString *checkString = @"a34sd231";
//1.创建正则表达式,[0-9]:表示‘0’到‘9’的字符的集合
NSString *pattern = @"[0-9]";
//1.1将正则表达式设置为OC规则
NSRegularExpression *regular = [[NSRegularExpression alloc] initWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil];
//2.利用规则测试字符串获取匹配结果
NSArray *results = [regular matchesInString:checkString options:0 range:NSMakeRange(0, checkString.length)];
NSLog(@"%ld",results.count);
获取打印结果,从checkString上分析为数字的字符有5
所以可以得出一个结论,正则表达式的作用就是把多可字符串杂糅到一个表达式中
到这里就能大概明白正则表达式的意义了,接下来介绍一部分常用的正则表达式字符
/*
[]:找到内部的某一个字符
[a-zA-Z0-9] ===> 代表字符或数字
\\d ====>代表数字
{2}:代表有2个
{2,4}:代表有2到4个
// ? + * ^ $ .
?: 代表0或1个
+: 代表至少1个
*: 代表0个或多个
^: 代表以...开头
$: 代表以...结束
.: 代表除换行符以外的任意字符
*/
//代表一个数字字符
NSString *pattern = @"\\d";
//代表2到5个连续的数字
NSString *pattern = @"\\d{2,5}";
//qq账号的正则表达式
NSString *pattern = @"^[1-9]\\d{4,10}";
//电话号码格式的正则表达式
NSString *pattern = @"^((13[0-9])|(15[3-5])|(18[07-9]))\\d{8}$"
//邮箱的正则表达式
NSString *pattern =@"^.*@..+\\.[a-zA-Z]{2,4}$"
这样根据需要的匹配规则来设定正则表达式就可以判断字符串是否为符合类型
若有一个长串字符串就要对其中部分进行表情、url、@(呼叫)或#话题# 的匹配判断
则需要多个正则表达式来进行判断
//需要被筛选的字符串
NSString *str = @"#今日要闻#[偷笑] http://asd.fdfs.2ee/aas/1e @sdf[test] #你确定#@rain李23: @张三[挖鼻屎]m123m";
//表情正则表达式
// \\u4e00-\\u9fa5 代表unicode字符
NSString *emopattern = @"\\[[a-zA-Z\\u4e00-\\u9fa5]+\\]";
//@正则表达式
NSString *atpattern = @"@[0-9a-zA-Z\\u4e00-\\u9fa5]+";
//#...#正则表达式
NSString *toppattern = @"#[0-9a-zA-Z\\u4e00-\\u9fa5]+#";
//url正则表达式
NSString *urlpattern = @"\\b(([\\w-]+://?|www[.])[^\\s()<>]+(?:\\([\\w\\d]+\\)|([^[:punct:]\\s]|/)))";
//设定总的正则表达式
NSString *pattern = [NSString stringWithFormat:@"%@|%@|%@|%@",emopattern,atpattern,toppattern,urlpattern];
//根据正则表达式设定OC规则
NSRegularExpression *regular = [[NSRegularExpression alloc] initWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil];
//获取匹配结果
NSArray *results = [regular matchesInString:str options:0 range:NSMakeRange(0, str.length)];
//NSLog(@"%@",results);
//遍历结果
for (NSTextCheckingResult *result in results) {
NSLog(@"%@ %@",NSStringFromRange(result.range),[str substringWithRange:result.range]);
}
获得结果

有了上面的演示就可以大致写出系统方法使用的正则表达式了
OC正则表达式的使用的更多相关文章
- OC正则表达式的简单使用
最近落实工作的事情后终于有时间可以写博客了 今天带来的是正则表达式的一般使用方法 我们平时在对字符串构成就行判断的时候,一般利用其单个字符进行条件判断 但如果判断的条件稍微复杂一点,那对单个字符判断就 ...
- OC - 正则表达式 - RegexKitLite
正则表达式使用步骤: 1. 创建正则表达式对象, 设置约束条件; NSString *pattern = @"\\d{1,3}"; NSRegularExpression *reg ...
- [Xcode 实际操作]九、实用进阶-(5)使用正则表达式判断格式是否正确
目录:[Swift]Xcode实际操作 本文将演示使用正则表达式判断邮箱的格式是否正确. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit ...
- iOS开发——网络使用技术OC篇&网络爬虫-使用正则表达式抓取网络数据
网络爬虫-使用正则表达式抓取网络数据 关于网络数据抓取不仅仅在iOS开发中有,其他开发中也有,也叫网络爬虫,大致分为两种方式实现 1:正则表达 2:利用其他语言的工具包:java/Python 先来看 ...
- iOS - OC/Swift:验证手机号/固话用正则表达式
/** * 验证手机号是否正确 * @param unknown_type $mobile */ OC: - (BOOL)isMobileNumber:(NSString *)mobileNum { ...
- oc常用正则表达式
常用的第三方正则库: http://regexkit.sourceforge.net/RegexKitLite/index.html 匹配中文字符的正则表达式: [\u4e00-\u9fa5]评注:匹 ...
- OC利用正则表达式获取网络资源(网络爬虫)
在开发项目的过程,很多情况下我们需要利用互联网上的一些数据,在这种情况下,我们可能要写一个爬虫来爬我们所需要的数据.一般情况下都是利用正则表达式来匹配Html,获取我们所需要的数据.一般情况下分以下三 ...
- JMeter中的关联-正则表达式提取(2)
JMeter获取正则表达式中的提取的所有关联值的解决方法: 需求如下: { : ", : "results": : [ : : { : : : "total_e ...
- OC和Java的比较
1.Cocoa是什么?Cocoa是使用OC语言编写的工具包,里面有大量的类库.结构体,说白了其实就相当于java中的标准API.C++中的标准库.OC中没有命名空间的概念,所以使用加前缀来防止命名冲突 ...
随机推荐
- Sylius – 100% 免费和开源的电子商务解决方案
Sylius 项目提供了一个完整的电子商务解决方案.您将学习如何掌握它,帮助你在下一个项目中能够更快速的开发.Sylius 提供了一个完整的在线商店演示:demo.sylius.com. 您可能感兴趣 ...
- 浅谈Mysql的MyIsam存储类型
前两年的工作,用NoSql多一些!最近进入了传统的软件开发公司,开始使用Mysql多了!不过对于我这种ABC级别的人来说,还是好好看书吧! 我常常觉得,如果我们不是明白原理,而只是知道一些概念,或者说 ...
- Django--models一对多实例
需求 models一对多表的构建,创建数据,查询数据,数据前端展示等. 速查 1.创建数据 1 2 all_data = obj.clean() #{'username': u'user1', ' ...
- mysql模拟rownum的一个方法
mysql> select * from t2; +----+---------------------+ | id | d | +----+---------------------+ :: ...
- Sprint 3计划
一.计划目标: 1.完成基本的首页面的信息查询功能 2.学生家教用户注册和登录,将信息存储到数据库 3.完成家教的资格评定设定和个人教学内容备份信息 二.燃尽图 三.项目具体工作细则 待明天工作会议分 ...
- 自定义ConfigurationSection,创建多个嵌套的ConfigurationElementCollection节点
由于接口地址都是固定的,所以想到使用自定义节点,来将接口都配置到web.config中. 很快,v1.0版本出炉: public class RequestConfigSection : Config ...
- Java概述之从源码到运行
Java体系结构包括以下四个部分: 1. Java语言 2. Java class文件格式(被编译后的java类文件格式) 3. Java API 4. Java虚拟机JVM 它们之间的关系,总结一句 ...
- 重温html5的新增的标签和废除的标签
HTML5已经盛行有段时间了,对于标签的使用,按照规范,哪些该用,哪些不该用,你是否都掌握了呢.今天我在这里详细列举下: 新增的结构标签 section元素 表示页面中的一个内容区 块,比如章节.页眉 ...
- C# 生成XML空元素/空节点自动换行解决方案
使用DataSet可以直接输出XML,并可指定是否带有Schema: ds.WriteXml(XMLFile,XmlWriteMode.WriteSchema ) 不过,这样将不会输出值为Null的字 ...
- 创建WCF服务自我寄宿
WCF服务的寄宿方式 WCF寄宿方式是一种非常灵活的操作,可以寄宿在各种进程之中,常见的寄宿有: IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为 ...