zoukankan      html  css  js  c++  java
  • iOS中的正则表达式[转]

    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:urlStringoptions: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);

  • 相关阅读:
    第七天 安卓 4大组件
    第六天 页面跳转和数据传递
    第五天 断点续传和下载
    objective-c里的protocol
    Cocos2d-x的屏幕适配
    CocosBuilder的Inspector及让Text View实时更新内容+binding控件到基类成员
    几个输出注意点
    Xcode
    Category、Extension
    iOS内存管理
  • 原文地址:https://www.cnblogs.com/pandas/p/4679301.html
Copyright © 2011-2022 走看看