iOS中使用正则表达式NSRegularExpression 来验证textfiled输入的内容

发布时间:2019-08-06 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了iOS中使用正则表达式NSRegularExpression 来验证textfiled输入的内容脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

何谓正则表达式

正则表达式(regular exPression),在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regeXen

正则表达式组成

正则表达式有两种类型的字符组成

第一种:用来匹配的字符,或者叫常规字符

第二种:控制字符或具有特殊含义的元字符

iphone 4.0以后就开始支持正则表达式的使用了,在ios4.0中正则表达式的使用是使用NSRegularExPRession类来调用。

1. 下面一个简单的使用正则表达式的一个例子:NSRegularExpression 类

 -(void)parseString{ //组装一个字符串,需要把里面的网址解析出来 NSString *urlString=@"sfdsfhttp://www.baidu.COM"; //NSRegularExpression类里面调用表达的方法需要传递一个NSError的参数。下面定义一个  NSError *error; //http+:[^//s]* 这个表达式是检测一个网址的。   NSRegularExpression *regex = [NSRegularExpression regularExpressionWIThPattern:@"http+:[^//s]*" options:0 error:&error];   if (regex != nil) {   NSTextCheckingResult *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(@"%@",result);   }   } }

2.使用正则表达式来判断

 //初始化一个NSRegularExpression 对象,并设置检测对象范围为:0-9  NSRegularExpression *regex2 = [NSRegularExpression regularExpressionWithPattern:@"^[0-9]*$" options:0 error:nil];     if (regex2)     {//对象进行匹配        NSTextCheckingResult *result2 = [regex2 firstMatchInString:textField.text options:0 range:NSMakeRange(0, [textField.text length])];       if (result2) {       } }

1.判断邮箱格式是否正确的代码:NSPredicatel类

//利用正则表达式验证

NSPredicatel类:主要用来指定过滤器的条件,该对象可以准确的描述所需条件,对每个对象通过谓词进行筛选,判断是否与条件相匹配。谓词是指在计算机中表示计算真假值的函数。原理和用法都类似于SQL查询中的where,作用相当于数据库的过滤取。主要用于从集合中分拣出符合条件的对象,也可以用于字符串的正则匹配

 -(BOOL)isValidateEmail:(NSString *)email {   NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+//.[A-Za-z]{2,4}";   NSPredicate *emailtest = [NSPredicate predicateWithFormat:@"SELF MATCHES%@",emailRegex];   return [emailTest evaluateWithObject:email]; }

2.匹配9-15个由字母/数字组成的字符串的正则表达式:

   NSString * regex = @"^[A-Za-z0-9]{9,15}$";   NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];   BOOL isMatch = [pred evaluateWithObject:txtfldPhoneNumber.text];

Cocoa用NSPredicate描述查询的方式,原理类似于在数据库中进行查询

用BETWEEN,IN,BEginWITH,ENDWITH,CONTAINS,LIKE这些谓词来构造NSPredicate,必要的时候使用SELF直接对自己进行匹配

 //基本的查询  NSPredicate *predicate;  predicate = [NSPredicate predicateWithFormat: @"name == 'Herbie'"];    BOOL match = [predicate evaluateWithObject: car];    NSLog (@"%s", (match) &#63; "YES" : "NO");  //在整个cars里面循环比较    predicate = [NSPredicate predicateWithFormat: @"engine.horsepower > 150"];    NSArray *cars = [garage cars];    for (Car *car in [garage cars]) {      if ([predicate evaluateWithObject: car]) {        NSLog (@"%@", car.name);      }    }  //输出完整的信息    predicate = [NSPredicate predicateWithFormat: @"engine.horsepower > 150"];    NSArray *results;    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@", results);  //含有变量的谓词    NSPredicate *predicateTemplate = [NSPredicate predicateWithFormat:@"name == $NAME"];    NSDictionary *VARDict;    varDict = [NSDictionary dictionaryWithObjectsAndKeys:          @"Herbie", @"NAME", nil];    predicate = [predicateTemplate predicateWithSubstitutionVariables: varDict];    NSLog(@"SNorgLE: %@", predicate);    match = [predicate evaluateWithObject: car];   NSLog (@"%s", (match) ? "YES" : "NO");  //注意不能使用$VARIABLE作为路径名,因为它值代表值  //谓词字符窜还支持c语言中一些常用的运算符    predicate = [NSPredicate predicateWithFormat:           @"(engine.horsepower > 50) AND (engine.horsepower < 200)"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"oop %@", results);    predicate = [NSPredicate predicateWithFormat: @"name < 'Newton'"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@", [results valueForKey: @"name"]);  //强大的数组运算符    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];    predicate = [NSPredicate predicateWithFormat: @"engine.horsepower BETWEEN %@", betweens];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@", results);    predicateTemplate = [NSPredicate predicateWithFormat: @"engine.horsepower BETWEEN $POWERS"];    varDict = [NSDictionary dictionaryWithObjectsAndKeys: betweens, @"POWERS", nil];    predicate = [predicateTemplate predicateWithSubstitutionVariables: varDict];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@", results);  //IN运算符    predicate = [NSPredicate predicateWithFormat: @"name IN { 'Herbie', 'Snugs', 'Badger', 'Flap' }"];    results = [cars filteredArrayUsingPredicate: predicate];    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 filteredArrayUsingPredicate: predicate];//这里限制了SELF的范围    NSLog (@"%@", results);  //BEGINSWITH,ENDSWITH,CONTAINS  //附加符号,[c],[d],[cd],c表示不区分大小写,d表示不区分发音字符,cd表示什么都不区分    predicate = [NSPredicate predicateWithFormat: @"name BEGINSWITH 'Bad'"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@", results);    predicate = [NSPredicate predicateWithFormat: @"name BEGINSWITH 'HERB'"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@", results);    predicate = [NSPredicate predicateWithFormat: @"name BEGINSWITH[cd] 'HERB'"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@", results);  //LIKE运算符(通配符)    predicate = [NSPredicate predicateWithFormat: @"name LIKE[cd] '*er*'"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@", results);    predicate = [NSPredicate predicateWithFormat: @"name LIKE[cd] '???er*'"];    results = [cars filteredArrayUsingPredicate: predicate];    NSLog (@"%@", results);  //基本的查询 NSPredicate *predicate; predicate = [NSPredicate predicateWithFormat: @"name == 'Herbie'"];   BOOL match = [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]) {       NSLog (@"%@", car.name);     }   } //输出完整的信息   predicate = [NSPredicate predicateWithFormat: @"engine.horsepower > 150"];   NSArray *results;   results = [cars filteredArrayUsingPredicate: predicate];   NSLog (@"%@", results); //含有变量的谓词   NSPredicate *predicateTemplate = [NSPredicate predicateWithFormat:@"name == $NAME"];   NSDictionary *varDict;   varDict = [NSDictionary dictionaryWithObjectsAndKeys:         @"Herbie", @"NAME", nil];   predicate = [predicateTemplate predicateWithSubstitutionVariables: varDict];   NSLog(@"SNORGLE: %@", predicate);   match = [predicate evaluateWithObject: car];  NSLog (@"%s", (match) ? "YES" : "NO"); //注意不能使用$VARIABLE作为路径名,因为它值代表值 //谓词字符窜还支持c语言中一些常用的运算符   predicate = [NSPredicate predicateWithFormat:          @"(engine.horsepower > 50) AND (engine.horsepower < 200)"];   results = [cars filteredArrayUsingPredicate: predicate];   NSLog (@"oop %@", results);   predicate = [NSPredicate predicateWithFormat: @"name < 'Newton'"];   results = [cars filteredArrayUsingPredicate: predicate];   NSLog (@"%@", [results valueForKey: @"name"]); //强大的数组运算符   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];   predicate = [NSPredicate predicateWithFormat: @"engine.horsepower BETWEEN %@", betweens];   results = [cars filteredArrayUsingPredicate: predicate];   NSLog (@"%@", results);   predicateTemplate = [NSPredicate predicateWithFormat: @"engine.horsepower BETWEEN $POWERS"];   varDict = [NSDictionary dictionaryWithObjectsAndKeys: betweens, @"POWERS", nil];   predicate = [predicateTemplate predicateWithSubstitutionVariables: varDict];   results = [cars filteredArrayUsingPredicate: predicate];   NSLog (@"%@", results); //IN运算符   predicate = [NSPredicate predicateWithFormat: @"name IN { 'Herbie', 'Snugs', 'Badger', 'Flap' }"];   results = [cars filteredArrayUsingPredicate: predicate];   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 filteredArrayUsingPredicate: predicate];//这里限制了SELF的范围   NSLog (@"%@", results); //BEGINSWITH,ENDSWITH,CONTAINS //附加符号,[c],[d],[cd],c表示不区分大小写,d表示不区分发音字符,cd表示什么都不区分   predicate = [NSPredicate predicateWithFormat: @"name BEGINSWITH 'Bad'"];   results = [cars filteredArrayUsingPredicate: predicate];   NSLog (@"%@", results);   predicate = [NSPredicate predicateWithFormat: @"name BEGINSWITH 'HERB'"];   results = [cars filteredArrayUsingPredicate: predicate];   NSLog (@"%@", results);   predicate = [NSPredicate predicateWithFormat: @"name BEGINSWITH[cd] 'HERB'"];   results = [cars filteredArrayUsingPredicate: predicate];   NSLog (@"%@", results); //LIKE运算符(通配符)   predicate = [NSPredicate predicateWithFormat: @"name LIKE[cd] '*er*'"];   results = [cars filteredArrayUsingPredicate: predicate];   NSLog (@"%@", results);   predicate = [NSPredicate predicateWithFormat: @"name LIKE[cd] '???er*'"];   results = [cars filteredArrayUsingPredicate: predicate];   NSLog (@"%@", results);

脚本宝典总结

以上是脚本宝典为你收集整理的iOS中使用正则表达式NSRegularExpression 来验证textfiled输入的内容全部内容,希望文章能够帮你解决iOS中使用正则表达式NSRegularExpression 来验证textfiled输入的内容所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。