版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、iOS中使用正则表达式NSRegularExpression 来验证textfiled输入的内容一个正则表达式(regexp)是由元字符和文字数字的文本字符,或者“文字的”(abc,123,及其他)混合组合而成的文本模式。 该类型用于匹配文本字符并附有匹配的结果,是成功还是失败。 Regexps 主要用于规则文本匹配以及搜索和替换。何谓正则表达式正则表达式(regular expression),在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。正则表达式这个概念最初是
2、由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。正则表达式组成正则表达式有两种类型的字符组成第一种:用来匹配的字符,或者叫常规字符第二种:控制字符或具有特殊含义的元字符iphone 4.0以后就开始支持正则表达式的使用了,在ios4.0中正则表达式的使用是使用NSRegularExpression类来调用。1. 下面一个简单的使用正则表达式的一个例子:NSRegularExpression 类?123456789101112131415161718-(void)pa
3、rseString/组装一个字符串,需要把里面的网址解析出来NSString *urlString=" "/NSRegularExpression类里面调用表达的方法需要传递一个NSError的参数。下面定义一个NSError *error;/http+:s* 这个表达式是检测一个网址的。NSRegularExpression *regex = NSRegularExpression regularExpressionWithPattern:"http+:s*" options:0 error:&error;if (regex != nil) N
4、STextCheckingResult *firstMatch=regex firstMatchInString:urlString options:0range:NSMakeRange(0, urlString length);if (firstMatch) NSRange resultRange = firstMatch rangeAtIndex:0; /等同于 firstMatch.range - 相匹配的范围/从urlString当中截取数据NSString *result=urlString substringWithRange:resultRange;/输出结果NSLog(&quo
5、t;%",result);2.使用正则表达式来判断?12345678/初始化一个NSRegularExpression 对象,并设置检测对象范围为:0-9 NSRegularExpression *regex2 = NSRegularExpression regularExpressionWithPattern:"0-9*$" options:0 error:nil;if (regex2)/对象进行匹配NSTextCheckingResult *result2 = regex2 firstMatchInString:textField.text options:0
6、 range:NSMakeRange(0, textField.text length);if (result2) 1.判断邮箱格式是否正确的代码:NSPredicatel类/利用正则表达式验证NSPredicatel类:主要用来指定过滤器的条件,该对象可以准确的描述所需条件,对每个对象通过谓词进行筛选,判断是否与条件相匹配。谓词是指在计算机中表示计算真假值的函数。原理和用法都类似于SQL查询中的where,作用相当于数据库的过滤取。主要用于从集合中分拣出符合条件的对象,也可以用于字符串的正则匹配?123456-(BOOL)isValidateEmail:(NSString *)emailNS
7、String *emailRegex = "A-Z0-9a-z._%+-+A-Za-z0-9.-+.A-Za-z2,4"NSPredicate *emailTest = NSPredicate predicateWithFormat:"SELF MATCHES%",emailRegex;return emailTest evaluateWithObject:email;2.匹配9-15个由字母/数字组成的字符串的正则表达式:?123NSString * regex = "A-Za-z0-99,15$"NSPredicate *pred
8、 = NSPredicate predicateWithFormat:"SELF MATCHES %", regex;BOOL isMatch = pred evaluateWithObject:txtfldPhoneNumber.text;Cocoa用NSPredicate描述查询的方式,原理类似于在数据库中进行查询用BETWEEN,IN,BEGINWITH,ENDWITH,CONTAINS,LIKE这些谓词来构造NSPredicate,必要的时候使用SELF直接对自己进行匹配?12345678910111213141516171819202122232425262728
9、2930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131/基本的查询 NSPredicate *predicate; predicate = NSPredicate predica
10、teWithFormat: "name = 'Herbie'" BOOL match = predicate evaluateWithObject: car; NSLog ("%s", (match) ? "YES" : "NO"); /在整个cars里面循环比较 predicate = NSPredicate predicateWithFormat: "engine.horsepower > 150" NSArray *cars = garage cars; for (C
11、ar *car in garage cars) if (predicate evaluateWithObject: car) NSLog ("%", ); /输出完整的信息 predicate = NSPredicate predicateWithFormat: "engine.horsepower > 150" NSArray *results; results = cars filteredArrayUsingPredicate: predicate; NSLog ("%", results); /含有变量的
12、谓词 NSPredicate *predicateTemplate = NSPredicate predicateWithFormat:"name = $NAME" NSDictionary *varDict; varDict = NSDictionary dictionaryWithObjectsAndKeys: "Herbie", "NAME", nil; predicate = predicateTemplate predicateWithSubstitutionVariables: varDict; NSLog("S
13、NORGLE: %", predicate); match = predicate evaluateWithObject: car; NSLog ("%s", (match) ? "YES" : "NO"); /注意不能使用$VARIABLE作为路径名,因为它值代表值 /谓词字符窜还支持c语言中一些常用的运算符 predicate = NSPredicate predicateWithFormat: "(engine.horsepower > 50) AND (engine.horsepower < 2
14、00)" results = cars filteredArrayUsingPredicate: predicate; NSLog ("oop %", results); predicate = NSPredicate predicateWithFormat: "name < 'Newton'" results = cars filteredArrayUsingPredicate: predicate; NSLog ("%", results valueForKey: "name")
15、; /强大的数组运算符 predicate = NSPredicate predicateWithFormat: "engine.horsepower BETWEEN 50, 200 " results = cars filteredArrayUsingPredicate: predicate; NSLog ("%", results); NSArray *betweens = NSArray arrayWithObjects: NSNumber numberWithInt: 50, NSNumber numberWithInt: 200, nil; p
16、redicate = NSPredicate predicateWithFormat: "engine.horsepower BETWEEN %", betweens; results = cars filteredArrayUsingPredicate: predicate; NSLog ("%", results); predicateTemplate = NSPredicate predicateWithFormat: "engine.horsepower BETWEEN $POWERS" varDict = NSDiction
17、ary dictionaryWithObjectsAndKeys: betweens, "POWERS", nil; predicate = predicateTemplate predicateWithSubstitutionVariables: varDict; results = cars filteredArrayUsingPredicate: predicate; NSLog ("%", results); /IN运算符 predicate = NSPredicate predicateWithFormat: "name IN
18、9;Herbie', 'Snugs', 'Badger', 'Flap' " results = cars filteredArrayUsingPredicate: predicate; NSLog ("%", results valueForKey: "name"); predicate = NSPredicate predicateWithFormat: "SELF.name IN 'Herbie', 'Snugs', 'Badger&
19、#39;, 'Flap' " results = cars filteredArrayUsingPredicate: predicate; NSLog ("%", results valueForKey: "name"); names = cars valueForKey: "name" predicate = NSPredicate predicateWithFormat: "SELF IN 'Herbie', 'Snugs', 'Badger',
20、'Flap' " results = names filteredArrayUsingPredicate: predicate;/这里限制了SELF的范围 NSLog ("%", results); /BEGINSWITH,ENDSWITH,CONTAINS /附加符号,c,d,cd,c表示不区分大小写,d表示不区分发音字符,cd表示什么都不区分 predicate = NSPredicate predicateWithFormat: "name BEGINSWITH 'Bad'" results = cars
21、filteredArrayUsingPredicate: predicate; NSLog ("%", results); predicate = NSPredicate predicateWithFormat: "name BEGINSWITH 'HERB'" results = cars filteredArrayUsingPredicate: predicate; NSLog ("%", results); predicate = NSPredicate predicateWithFormat: "na
22、me BEGINSWITHcd 'HERB'" results = cars filteredArrayUsingPredicate: predicate; NSLog ("%", results); /LIKE运算符(通配符) predicate = NSPredicate predicateWithFormat: "name LIKEcd '*er*'" results = cars filteredArrayUsingPredicate: predicate; NSLog ("%", r
23、esults); predicate = NSPredicate predicateWithFormat: "name LIKEcd '?er*'" results = cars filteredArrayUsingPredicate: predicate; NSLog ("%", results); /基本的查询NSPredicate *predicate;predicate = NSPredicate predicateWithFormat: "name = 'Herbie'"BOOL match
24、= predicate evaluateWithObject: car;NSLog ("%s", (match) ? "YES" : "NO");/在整个cars里面循环比较predicate = NSPredicate predicateWithFormat: "engine.horsepower > 150"NSArray *cars = garage cars;for (Car *car in garage cars) if (predicate evaluateWithObject: car) NSL
25、og ("%", );/输出完整的信息predicate = NSPredicate predicateWithFormat: "engine.horsepower > 150"NSArray *results;results = cars filteredArrayUsingPredicate: predicate;NSLog ("%", results);/含有变量的谓词NSPredicate *predicateTemplate = NSPredicate predicateWithFormat:"
26、;name = $NAME"NSDictionary *varDict;varDict = NSDictionary dictionaryWithObjectsAndKeys:"Herbie", "NAME", nil;predicate = predicateTemplate predicateWithSubstitutionVariables: varDict;NSLog("SNORGLE: %", predicate);match = predicate evaluateWithObject: car;NSLog (&
27、quot;%s", (match) ? "YES" : "NO");/注意不能使用$VARIABLE作为路径名,因为它值代表值/谓词字符窜还支持c语言中一些常用的运算符predicate = NSPredicate predicateWithFormat:"(engine.horsepower > 50) AND (engine.horsepower < 200)"results = cars filteredArrayUsingPredicate: predicate;NSLog ("oop %&qu
28、ot;, results);predicate = NSPredicate predicateWithFormat: "name < 'Newton'"results = cars filteredArrayUsingPredicate: predicate;NSLog ("%", results valueForKey: "name");/强大的数组运算符predicate = NSPredicate predicateWithFormat:"engine.horsepower BETWEEN 50,
29、 200 "results = cars filteredArrayUsingPredicate: predicate;NSLog ("%", results);NSArray *betweens = NSArray arrayWithObjects:NSNumber numberWithInt: 50, NSNumber numberWithInt: 200, nil;predicate = NSPredicate predicateWithFormat: "engine.horsepower BETWEEN %", betweens;res
30、ults = cars filteredArrayUsingPredicate: predicate;NSLog ("%", results);predicateTemplate = NSPredicate predicateWithFormat: "BETWEEN $POWERS"varDict = NSDictionary dictionaryWithObjectsAndKeys: betweens, "POWERS", nil;predicate = predicateTemplate predicateWithSubstitu
31、tionVariables: varDict;results = cars filteredArrayUsingPredicate: predicate;NSLog ("%", results);/IN运算符predicate = NSPredicate predicateWithFormat: "name IN 'Herbie', 'Snugs', 'Badger', 'Flap' "results = cars filteredArrayUsingPredicate: predicate
32、;NSLog ("%", results valueForKey: "name");predicate = NSPredicate predicateWithFormat: "SELF.name IN 'Herbie', 'Snugs', 'Badger', 'Flap' "results = cars filteredArrayUsingPredicate: predicate;NSLog ("%", results valueForKey: "name");names = cars valueForKey: "name"predicate = NSPredicate predicateWithFormat: "SELF IN 'Herbie', 'Snugs', 'Badger', 'Flap' "results = names f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 购销合同诈骗不要轻信陌生人的信誉
- 足疗店合作联盟合同范例
- 软件合同保密协议的实证研究方法
- 软件许可和授权合同
- 输送带安装手册销售合同
- 违反校规学生保证书范文
- 透水混凝土透水混凝土排水层买卖合同
- 遵守纪律的保证书
- 酒店品质严格保保证
- 酒店旅游服务合同模板
- 灵性开悟不是你想象的那样(A4横版打印)
- 机织学课后习题答案
- 2023年榆林市黄河东线引水工程有限公司招聘笔试题库及答案解析
- 固定资产贷款和项目融资的分析框架和审查要点课件
- 思想道德与法治第二章
- 高考语文复习散文句段作用分析 课件 (26张PPT)
- IPD新产品研发流程优化与研发项目管理课件
- 北林园林树木学各论课件
- 食堂经营管理方案课件
- 浦发银行个人信用报告异议申请表
- 室内设计专题讲座课件
评论
0/150
提交评论