在现阶IOS开发的样式越来越多,我们在开发APP的时候难免会遇到对用户的登录和注册进行操作,但是登录注册如果想要做的人性化少不了的就是校验,对当前用户的登录信息进行校验,如果满足要求我们会把用户注册的信息存入数据库如果不满足信息我们需要重新提示用户输入,涉及到校验我们离不开的就是正则表达式,下面我们一起来学习一下IOS如何操作正则表达式。

  1、正则表达式的语法我们在这里不详细介绍,如果对这个不熟悉的可以参考网站:http://www.cnblogs.com/light169/archive/2006/10/18/532347.html

  2、下面我们简单的定义一个正在表达式

 //正则表达式 匹配烟台本地电话号码
NSString * pattern=@"^0535-\\d{6}$"; //待匹配字符串
NSString * str=@"0535-6062799";

  IOS中主要提供了两种方式处理正则表达式,一种是block的形式,一种是非block的形式下面我们逐个使用一下:

  方式一:

//定义并且初始化一个NSRegularExpression对象
NSRegularExpression * reg=[[NSRegularExpression alloc] initWithPattern:pattern options:NSRegularExpressionDotMatchesLineSeparators error:nil];

在初始化方法中有一个options参数这个参数是一个枚举类型,我们点击去api如下:

  我们简单翻译一下

NSRegularExpressionCaseInsensitive              //不区分字母大小写的模式

NSRegularExpressionAllowCommentsAndWhitespace  //忽略掉正则表达式中的空格和#号之后的字符

NSRegularExpressionIgnoreMetacharacters        //将正则表达式整体作为字符串处理

NSRegularExpressionDotMatchesLineSeparators    //允许.匹配任何字符,包括换行符

NSRegularExpressionAnchorsMatchLines            //允许^和$符号匹配行的开头和结尾

NSRegularExpressionUseUnixLineSeparators        //设置\n为唯一的行分隔符,否则所有的都有效。

NSRegularExpressionUseUnicodeWordBoundaries     //使用Unicode TR#29标准作为词的边界,否则所有传统正则表达式的词边界都有效

//调用matchesInString 方法返回匹配数组
NSArray * array= [reg matchesInString:str options:NSMatchingReportCompletion range:NSMakeRange(, [str length])];

当前方法中也是有options选项,我们点击去查看

  翻译成中文

NSMatchingReportProgress         = 1 << 0, //找到最长的匹配字符串后调用block回调

NSMatchingReportCompletion       = 1 << 1, //找到任何一个匹配串后都回调一次block

NSMatchingAnchored               = 1 << 2, //从匹配范围的开始出进行极限匹配

NSMatchingWithTransparentBounds  = 1 << 3, //允许匹配的范围超出设置的范围

NSMatchingWithoutAnchoringBounds = 1 << 4  //禁止^和$自动匹配行还是和结束

 //数组里面装的是NSTextCheckingResult,我们将对象里面匹配范围打印出来,并且根据范围截取字符串
for (NSTextCheckingResult * result in array) {
NSLog(@"%@",NSStringFromRange(result.range));
NSString * s=[str substringWithRange:result.range];
NSLog(@"%@",s);
}

这样我们就成功的讲字符串匹配出来了。

方式二:block方式参数选项跟上面结束的第一种相同,用法如下:

 [reg enumerateMatchesInString:str options:NSMatchingReportCompletion range:NSMakeRange(, [str length]) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
NSLog(@"%@",NSStringFromRange(result.range));
NSString * s=[str substringWithRange:result.range];
NSLog(@"%@",s);
}];

  方式三:我们已经现在已经可以匹配简单的字符串了,但是我们在工作中有时候需要对字符串进行分割,例如字符串hello[你好]world[大家好]good,我们需要将字符串按照中文进行分割,要是实习这个功能我们借助第三方会达到事半功倍的效果下面我们用第三方RegexKitLite来实现这个功能。

  1、我们定义正则表达式

//用来匹配中文

        NSString * pattern=@"\\[[\\u4E00-\\u9FA5]+\\]";

 //待匹配字符串

        NSString * str=@"[哈哈]hello[你好]world[吗]good";

  2、将文件拖入项目

3、将该文件编译改为非arc

4、引入辅助库

5、用法比较简单,我们首先需要引入头文件,然后直接调用如下方法即可

#import "RegexKitLite.h"
//用来获取分割后的字符串
[str enumerateStringsSeparatedByRegex:pattern usingBlock:^(NSInteger captureCount, NSString *const __unsafe_unretained *capturedStrings, const NSRange *capturedRanges, volatile BOOL *const stop) {
NSLog(@"%@",*capturedStrings);
}]; //用来获取匹配的字符串
[str enumerateStringsMatchedByRegex:pattern usingBlock:^(NSInteger captureCount, NSString *const __unsafe_unretained *capturedStrings, const NSRange *capturedRanges, volatile BOOL *const stop) {
NSLog(@"%@",*capturedStrings);
}];

然后我们就可以开心的用正则表达式编程了。。

作者:杰瑞教育
出处:http://www.cnblogs.com/jerehedu/ 
本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
 

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

  1. IOS常用正则表达式

    IOS常用正则表达式 正则表达式用于字符串处理.表单验证等场合,实用高效.现将一些常用的表达式收集于此,以备不时之需. 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是 ...

  2. iOS之正则表达式的使用

    一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...

  3. iOS - Regex 正则表达式

    1.Regex 定义 正则表达式又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为 regex.regexp 或 RE),计算机科学的一个概念.正则表达式使用单个 ...

  4. IOS开发——正则表达式验证手机号、密码

    App的实际应用中,用户登陆功能基本是每个App都有需求的一个功能.而当前我们很常规的做法,就是让用户把手机号作为自己的用户名,而在注册获取短信验证码的过程中,我们首先要完成的一个步骤,就是校验用户的 ...

  5. ios 一个正则表达式测试(只可输入中文、字母和数字)

    一个正则表达式测试(只可输入中文.字母和数字) 在项目中碰到了正则表达式的运用,正则还是非常强大的,不管什么编程语言,基本上都可以用到.之前在用java时特别是对用户名或密码使用正则非常爽,写 脚本上 ...

  6. iOS开发正则表达式的学习

    正则表达式笔记 每天的一小步,知道我在不断进步,这就是我每天的小目标. 这是我的第一篇博客,在工作之余,我会努力地留下些许脚印. 我是一名iOS开发者,对于iOS我仅仅只是一个菜鸟,愿意在此处留下我的 ...

  7. iOS中正则表达式的基本使用方法

    一.第三方框架RegexKitLite的使用 在ios项目中可以借用第三方框架RegexKitLite来简化对正则表达式的使用,使用方法如下 1.去RegexKitLite下载类库,解压出来会有一个例 ...

  8. IOS 用正则表达式解析HTML等文件,得到所有文本

    获得网页内容 NSURL *url=[NSURL URLWithString:@"http://121.199.34.52/wordpress/?json=core.get_post_con ...

  9. iOS开发--正则表达式

    目录[-] 正则表达式简单语法总结 一.什么是正则表达式 二.正则表达式的基础语法 1.字面值 2.特殊字符(元字符) (1)句号 (2)字符类([]) (3)区间符号(-) (4)取反符号(^) ( ...

随机推荐

  1. JDK源码分析(四)——LinkedHashMap

    目录 LinkedHashMap概述 内部字段及构造方法 存储元素 取出元素 删除元素 迭代器 利用LinkedHashMap简单实现LRU算法 总结 LinkedHashMap概述   JDK对Li ...

  2. 1015 Reversible Primes (20)(20 point(s))

    problem A reversible prime in any number system is a prime whose "reverse" in that number ...

  3. 谈应用环境下的TIME_WAIT和CLOSE_WAIT[转]

    昨天解决了一个HttpClient调用错误导致的服务器异常,具体过程如下: http://blog.csdn.net/shootyou/article/details/6615051 里头的分析过程有 ...

  4. [POI2000]Repetitions

    题目大意: 求多个字符串的LCS. 思路: 同SPOJ-LCS2,不过因为SPOJ上数据比较水,当时用错误的写法过掉了,这次用正确的写法重新过了一遍. 拓扑排序按照每个状态的len值,用计数排序实现. ...

  5. [HDU6198]number number number

    题目大意: 给定一个数k表示你可以从包括0的斐波那契数列中任取k个数,得到它们的和.求最小的不能得到的自然数. 思路: 打表找规律,可以发现答案为f(2k+3)-1,然后用公式f(i)=f(i/2)* ...

  6. hdu 4549 矩阵快速幂

    题意: M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = aF[1] = bF[n] = F[n-1] * F[n-2] ( n > 1 ) 现在给出a, b, n,你能求出F ...

  7. ssh连接时提示THE AUTHENTICITY OF HOST XX CAN'T BE ESTABLISHED

    问题描述:使用ssh远程连接的时候报如下错误: 解决办法: 输入如下命令: ssh -o StrictHostKeyChecking=no root@123.59.xx.xx 输入密码,链接成功 其他 ...

  8. 一个java高级工程师的进阶之路【转】

    宏观方面 一. JAVA.要想成为JAVA(高级)工程师肯定要学习JAVA.一般的程序员或许只需知道一些JAVA的语法结构就可以应付了.但要成为JAVA(高级) 工程师,您要对JAVA做比较深入的研究 ...

  9. ios项目开发(天气预报项目):使用正则获取 weather.com.cn站点信息

    NSString *pattern = @"(?<=<td class=\"bigblod\">).*?(?=</td>)"; 2 ...

  10. 实现观察者模式(Observer Pattern)的2种方式

    在观察者模式中有2个要素:一个是被观察对象,另一个是观察者.但被观察对象的状态发生改变会通知观察者. 举例:把订阅报纸的人看作是观察者,把报纸看作被观察对象.每当有新的新闻就要通知订阅报纸的人.本篇分 ...