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正则表达式的使用的更多相关文章

  1. OC正则表达式的简单使用

    最近落实工作的事情后终于有时间可以写博客了 今天带来的是正则表达式的一般使用方法 我们平时在对字符串构成就行判断的时候,一般利用其单个字符进行条件判断 但如果判断的条件稍微复杂一点,那对单个字符判断就 ...

  2. OC - 正则表达式 - RegexKitLite

    正则表达式使用步骤: 1. 创建正则表达式对象, 设置约束条件; NSString *pattern = @"\\d{1,3}"; NSRegularExpression *reg ...

  3. [Xcode 实际操作]九、实用进阶-(5)使用正则表达式判断格式是否正确

    目录:[Swift]Xcode实际操作 本文将演示使用正则表达式判断邮箱的格式是否正确. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit ...

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

    网络爬虫-使用正则表达式抓取网络数据 关于网络数据抓取不仅仅在iOS开发中有,其他开发中也有,也叫网络爬虫,大致分为两种方式实现 1:正则表达 2:利用其他语言的工具包:java/Python 先来看 ...

  5. iOS - OC/Swift:验证手机号/固话用正则表达式

    /** * 验证手机号是否正确 * @param unknown_type $mobile */ OC: - (BOOL)isMobileNumber:(NSString *)mobileNum { ...

  6. oc常用正则表达式

    常用的第三方正则库: http://regexkit.sourceforge.net/RegexKitLite/index.html 匹配中文字符的正则表达式: [\u4e00-\u9fa5]评注:匹 ...

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

    在开发项目的过程,很多情况下我们需要利用互联网上的一些数据,在这种情况下,我们可能要写一个爬虫来爬我们所需要的数据.一般情况下都是利用正则表达式来匹配Html,获取我们所需要的数据.一般情况下分以下三 ...

  8. JMeter中的关联-正则表达式提取(2)

    JMeter获取正则表达式中的提取的所有关联值的解决方法: 需求如下: { : ", : "results": : [ : : { : : : "total_e ...

  9. OC和Java的比较

    1.Cocoa是什么?Cocoa是使用OC语言编写的工具包,里面有大量的类库.结构体,说白了其实就相当于java中的标准API.C++中的标准库.OC中没有命名空间的概念,所以使用加前缀来防止命名冲突 ...

随机推荐

  1. [Linux] zip 与 unzip 命令

    zip zip 命令基本格式为: zip options archive inpath inpath ... archive 是 .zip 文件(新的或已经存在的). inpath 是需要打包的目录或 ...

  2. C#生成不重复的随机数(转)

    我们在做能自动生成试卷的考试系统时,常常需要随机生成一组不重复随机数的题目,在.net Framework中提供了一个专门用来产生随机数的类System.Random. 对于随机数,大家都知道,计算机 ...

  3. Android性能优化之内存篇

    下面是内存篇章的学习笔记,部分内容与前面的性能优化典范有重合,欢迎大家一起学习交流! 1)Memory, GC, and Performance 众所周知,与C/C++需要通过手动编码来申请以及释放内 ...

  4. bootstrap插件学习-bootstrap.alert.js

    我们先看bootstrap.alert.js的结构 var dismiss = '[data-dismiss="alert"]' //自定义属性 Alert = function ...

  5. JS阻止鼠标滚动

    var scrollFunc=function(e){ e=e || window.event; if (e.stopPropagation) e.stopPropagation(); else e. ...

  6. Linux - Yum的常用方法总结

    简述 rpm是由红帽公司开发的软件包管理方式,使用rpm可以方便的进行软件的安装.查询.卸载.升级等工作. 但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时. Yum(全称 ...

  7. PerfMap – 显示前端网站性能的热力图插件

    PerfMap 是用来分析前端性能,基于资源定时 API 生成网页资源加载的前端性能热图.热图的颜色和第一个毫秒值指示在什么时候页面的图像加载完毕,这是用户体验的一个很好的指标.括号中的第二个值是浏览 ...

  8. mysqldump: Couldn't execute 'show table status '解决方法

    执行:[root@host2 lamp]# mysqldump -F -R -E --master-data=2   -p -A --single-transaction 在控制台端出现 mysqld ...

  9. ADO.NET 增 删 改 查

    ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...

  10. ASP.NET 使用AJAX让GridView的数据行显示提示框(ToolTip)

    介绍ASP.NET AJAX可以使你的web应用程序具有更丰富的功能和更多的用户响应. 本文中,我将演示如何通过ASP.NET AJAX的帮助,给像GridView这样的数据绑定控件的数据行增加pop ...