千家信息网

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

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了iOS中如何使用正则表达式NSRegularExpression来验证textfiled输入的内容,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面
千家信息网最后更新 2026年11月01日iOS中如何使用正则表达式NSRegularExpression来验证textfiled输入的内容

这篇文章主要介绍了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) ? "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输入的内容"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

正则 表达式 字符 谓词 对象 字符串 运算符 运算 条件 篇文章 支持 查询 内容 验证 数据 范围 输出 输入 代表 信息 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 厦门中拓互联网络科技有限公司 疫情对互联网科技公司影响 河南真二互联网科技有限公司 麻工互联网科技 互联网金融科技委员会 互联网 科技服务平台 江苏南京365互联网科技 西藏七维空间互联网科技有限公司 须眉科技是互联网公司吗 北京大学互联网科技怎么样 广州慧亚互联网科技怎么样 互联网科技教育视频 上海京穆互联网科技有限公司 山东子淼互联网科技有限公司 江苏苏星互联网科技有限公司 半导体是互联网高科技吗 互联网科技新闻 好易买互联网科技 平安好医生打造互联网科技医疗 伍佰万互联网科技是干嘛的 中关村互联网科技集团 互联网科技的未来发展 互联网科技视频素材 顶级互联网科技成果有哪些 语蝶互联网科技有限公司 互联网方面的科技前沿 互联网与数字科技关系 唐山双旺合互联网科技产业园 北京品多多互联网科技有限公司 中国主要互联网科技公司
0