IOS用正则表达式验证textfield输入的内容是否合法

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直接对自己进行匹配

 

[cpp]
//基本的查询  
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);

时间: 2024-11-27 07:59:31

IOS用正则表达式验证textfield输入的内容是否合法的相关文章

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

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

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

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

JavaScript正则表达式验证身份证号码是否合法(两种方法)_正则表达式

第一种方法: 在用户注册页面有些需求要求的比较严格,需要对身份证js验证是否合法,通过此功能严格此系统软件,从而过滤到很多水客.下面就此实现方法给大家讲解下. 很多时候我们都是通过一组正则表达式来判断用户输入的身份证是否合法,那在用正则表达式判断之前,你对身份证号的组成有多少了解呢?下面来说说一个身份证号里面包含了多少的信息: 1.号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码.

如何用javascript正则表达式验证身份证号码是否合法_正则表达式

在用户注册页面有些需求要求的比较严格,需要对身份证验证是否合法,通过此功能严格此系统软件,从而过滤到很多水客.下面就此实现方法给大家讲解下. 很多时候我们都是通过一组正则表达式来判断用户输入的身份证是否合法,那在用正则表达式判断之前,你对身份证号的组成有多少了解呢?下面来说说一个身份证号里面包含了多少的信息: 1.号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 2.地址码(前六

iOS 委托与文本输入(内容根据iOS编程编写)_IOS

•文本框(UITextField) 本章节继续编辑 JXHypnoNerd .文件地址 . 首先我们继续编辑 JXHypnosisViewController.m 修改 loadView 方法,向 view 中添加一个 UITextField 对象: #import "JXHypnosisViewController.h" #import "JXHypnosisView.h" @interface JXHypnosisViewController () @end @

仅几行iOS代码限制TextField输入长度_IOS

网上有很多限制textField输入长度方法,但是我觉得都不是很完美,准确来说可以说是不符合实际开发的要求,因此在这里整理一下textField限制输入长度的方法.  我所采用的并不是监听方法而是最不同的代理实现方法,为什么不使用监听呢???  当你看到这篇文章很有可能视是为一件事所苦恼那就是使用监听限制输入长度后不能够完美的控制输入内容.  举一个简单的例子:  你要限制输入长度为30个字符,当你输入30个字符后监听的确可以很好的控制不让你继续输入,但是问题也随之而来,当你把光标移动到输入内容

js正则表达式 验证百分数,要求只能输入0%-100% 之间的数

问题描述 js正则表达式 验证百分数,要求只能输入0%-100% 之间的数 填写举例:0%.50%.100%,可能是0%-100%其中的任何数字,最多小数点后保留2位,例如97.51%/98.32%.? 解决方案 ^(100|[1-9]d|d)(.d{1,2})?%$ 解决方案二: Js中运用正则表达式验证输入是否有特殊字符 . 解决方案三: ^(100|[1-9]d|d)(.d{1,2})?%$ 解决方案四: ^([1-9]{1}[0-9]{0,1}|0|100)(.d{1,2}){0,1}%

使用正则表达式验证登录页面输入是否符合要求

先给大家展示下效果图: 废话不多说了,直接给大家贴代码了,具体代码如下所示: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <script src="js/jquery-1.8.0.min.js"></script> <script> $(f

javascript正则表达式验证各种文本框输入格式

手机号为13开头的11位数字  代码如下 复制代码 function f_MobilCheck(as_SourceString) {  if(as_SourceString.match(/^13[0-9]{9}$/g)) return true;  //手机号为13开头的11位数字  else if(as_SourceString.match(/^[0]{1}[0-9]{2,3}[2-8]{1}[0-9]{5,7}$/g)) return true; //小灵通为0开头的3-4位的区号+不以1和