正则表达式在IOS中的应用及IOS中三种正则表达式的使用与比1剖析_第1页
正则表达式在IOS中的应用及IOS中三种正则表达式的使用与比1剖析_第2页
正则表达式在IOS中的应用及IOS中三种正则表达式的使用与比1剖析_第3页
正则表达式在IOS中的应用及IOS中三种正则表达式的使用与比1剖析_第4页
正则表达式在IOS中的应用及IOS中三种正则表达式的使用与比1剖析_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、正则表达式在 IOS 中的应用及 IOS中三种正则表达式的使用与比较 正则表达式在 ios 中应用 一、什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式。正则表达式可以检测给定的字 符串是否符合我们定义的逻辑, 也可以从字符串中获取我们想要的特定部分。 它可以迅速地用极简单 的方式达到字符串的复杂控制。 二、正则表达式的语法 看一个过滤纯数字的例子 - (BOOL)validateNumber:(NSString *) textString NSString* number=0-9+$; NSPredicate *numberPre = NSPredicate pre

2、dicateWithFormat:SELF MATCHES %,number; return numberPre evaluateWithObject:textString; 其中下述语句就是一个正则表达式 0-9+$ 它代表了字符串中只能包含 =1个0-9 的数字,语法是不是有一些怪异? 下面我们先撇开 iOS 中的正则表达式的语法,用通俗的正则表达式语法来为介绍一下。(iOS 语 法与通俗的正则表达式语法相同,不同在于对转义字符的处理上 ( 语言类的都相同 ) ) 语法: 首先,特殊符号 和 $ 。他们的作用是分别指出一个字符串的开始和结束。eg: “one”:表示所有以” one”开始的

3、字符串(” one cat ”,” one123,); 类似于 :- (BOOL)hasPrefix:(NSString *)aString; “a dog$ ”:表示所以以” a dog ”结尾的字符串(” it is a dog ”,); 类似于 :- (BOOL)hasSuffix:(NSString *)aString; “ apple$ ”:表示开始和结尾都是” apple ”的字符串,这个是唯一的 ; “ banana”:表示任何包含” banana”的字符串。 类似于 iOS8 的新方法 - (BOOL)containsString:(NSString *)aString, 搜索

4、子串用的。 * ,+ 和? 这三个符号, 表示一个或 N 个字符重复出现的次数。 它们分别表示 “没有或更多” (0,+ 取整),“一次或更多”( 1,+ 取整),“没有或一次”( 0,1 取整)。下面是几个 例子: “ab* ”:表示一个字符串有一个 a 后面跟着零个或若干个 b(”a”, “ab”, “abbb”, ); “ ab+”:表示一个字符串有一个 a后面跟着至少一个 b 或者更多( ”ab”, “ abbb”, ); “ab?”:表示一个字符串有一个 a 后面跟着零个或者一个 b( ”a”, “ab”); “a?b+$”:表示在字符串的末尾有零个或一个 a跟着一个或几个 b( ”

5、b”, “ab”, ”bb” abb” , )。 可以用大括号括起来( ),表示一个重复的具体范围。例如 “ ab4 ”: 表示一个字符串有一个 a 跟着 4 个 b(” abbbb ”); “ab1, ” :表示一 个字符串有一个 a 跟着至少 1 个 b(” ab”, ”abb”, ”abbb” , ); “ab3,4 ” :表示一 个字符串有一个 a跟着 3 到 4 个 b(”abbb”, ” abbbb”) 。 那么,“ *”可以用0,表示,“ +”可以用 1 , 表示,“ ?”可以用0 ,1表示 注意:可以没有下限,但是不能没有上限!例如“ ab,5 ”是错误的写法 “ | ”表示“

6、或”操作: “a|b ”:表示一个字符串里有” a”或者” b”; “ (a|bcd)ef ”:表示” aef ”或” bcdef ”; “(a|b)*c ”:表示一串” a”b ”混合的字符串后面跟一个” c”; 方括号” “表示在括号内的众多字符中,选择 1-N 个括号内的符合语法的字符作为结果,例 如 “ab “:表示一个字符串有一个” a”或” b”(相当于” a|b ”); “ a-d “:表示一个字符串包含小写的 a 到d 中的一个(相当于” a|b|c|d ”或者” abcd “); “ a-zA-Z “:表示一个以字母开头的字符串; “ 0-9a ”:表示 a 前有一位的数字;

7、 “ a-zA-Z0-9$ ”:表示一个字符串以一个字母或数字结束。 “. ”匹配除“ rn ”之外的任何单个字符: “a.a-z “:表示一个字符串有一个” a”后面跟着一个任意字符和一个小写字母; “ .5$ ”:表示任意 1 个长度为 5 的字符串; “ num” 其中 num是一个正整数。表示” num”之前的字符出现相同的个数,例如 “ (.)1 :表示两个连续的相同字符。 “101,2 ” : 表示数字 1后面跟着 1或者 2个0 ( “10,”100)。 ” 03, ” 表示数字为至少 3 个连续的 0 (“ 000”,“ 0000”,) 在方括号里用 表示不希望出现的字符, 应

8、在方括号里的第一位。 “ a-zA-Z4 ”表示两个” ”中不应该出现字母)。 常用的还有: “ d ”匹配一个数字字符。等价于 0-9 。 “ D ”匹配一个非数字字符。等价于 0-9 。 “ w ”匹配包括下划线的任何单词字符。等价于“ A-Za-z0-9_ ”。 “ W ”匹配任何非单词字符。等价于“ A-Za-z0-9_ ”。 iOS 中书写正则表达式,碰到转义字符,多加一个“”, 例如: 全数字字符: ” d+$ 三、iOS 中正则表达式 1. 正则表达式与 NSPredicate 连用, eg: - (BOOL)validateNumber:(NSString *) textStr

9、ing NSString* number=0-9+$; NSPredicate *numberPre = NSPredicate predicateWithFormat:SELF MATCHES %,number; return numberPre evaluateWithObject:textString; 2. NSString 方法 - (NSRange)rangeOfString:(NSString *)aString 1 options:(NSns)mask; 2 NSString *searchText = rangeOfString; 3NSRange range = searc

10、hText rangeOfString:0-9+$ options:NSRegularExpressionSearch; 4 if (range.location != NSNotFound) 5 NSLog(range : %, searchText substringWithRange:range); 6 3. 正则表达式类( NSRegularExpression ) NSString *searchText = you want to match; NSError *error = NULL; NSRegularExpression *regex = NSRegularExpressi

11、on regularExpressionWithPattern:0-9+$ options:NSRegularExpressionCaseInsensitive error: NSTextCheckingResult *result = regex firstMatchInString:searchText options:0 range:NSMakeRange(0, searchText length); if (result) NSLog(%, searchText substringWithRange:result.range); 四、常用的正则表达式 以下红色字符串是常用的正则表达式(

12、以下正则表达式来自百度百科) 1. 验证用户名和密码:” a-zA-Zw5,15$ ” 2. 验证电话号码:(” ( d3,4-)d7,8$ ”) eg:0511-6868686 ; 3. 验证手机号码:” 13|4|5|7|80-9d8$ ”; 4. 验证身份证号( 15位或 18 位数字):” d140-9,0-9xX ”; 5. 验证 Email 地址:( “w+(-+.w+)*w+(-.w+)*.w+(-.w+)*$”); 6. 只能输入由数字和 26个英文字母组成的字符串: ( “A-Za-z0-9+$ ”) ; 7. 整数或者小数: 0-9+(.0,10

13、-9+)0,1$ 8. 只能输入数字:” 0-9*$ ”。 9. 只能输入 n 位的数字:” dn$ ”。 10. 只能输入至少 n 位的数字:” dn,$ ”。 11. 只能输入 mn位的数字:” dm,n$ ”。 12. 只能输入零和非零开头的数字:” (0|1-90-9*)$ ”。 13. 只能输入有两位小数的正实数:” 0-9+(.0-92)?$ ”。 14. 只能输入有 13 位小数的正实数:” 0-9+(.0-91,3)?$ ”。 15. 只能输入非零的正整数:” +?1-90-9*$ ”。 16. 只能输入非零的负整数:” -1-90-9 *$。 17. 只能输入长度为 3 的字

14、符:” .3$ ”。 18. 只能输入由 26 个英文字母组成的字符串:” A-Za-z+$ ”。 19. 只能输入由 26 个大写英文字母组成的字符串:” A-Z+$ ”。 20. 只能输入由 26 个小写英文字母组成的字符串: a-z+$ 21. 验证是否含有 ”等字符:” %=?$x22+ 22. 只能输入汉字:” u4e00-u9fa50,$ ”。 23. 验证 URL:” http:/(w-+.)+w-+(/w-./?% NSPredicate *predicate = NSPredicate predicateWithFormat:SELF MATCHE%S ,r egex; 3

15、BOOL isValid = predicate evaluateWithObject:email; 4 谓词匹配比较灵活,但是需要有谓词的相关知识。 2. 利用 rangeOfString : option :直接查找 NSString *searchText = / Do any additional setup view, typically from a nib.; NSRange range = searchText rangeOfString:(?:,)*. options:NSRegularExpressionSearch; if (range.location != NSNot

16、Found) NSLog(%, searchText substringWithRange:range); options 中设定 NSRegularExpressionSearch 就是表示利用正则表达式匹配,会返回第一个匹配结果 的位置。 3. 使用正则表达式类 NSString *searchText = / Do any additional setup after loading the view, typically from a nib.; NSError *error = NULL; NSRegularExpression *regex = NSRegularExpression 3 regularExpressionWithPattern:(?:,)*. 4 options:NSRegularExpressionCa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论