zoukankan      html  css  js  c++  java
  • iOS: 正则表达式

      OS中一共有3种方式进行正则表达式的匹配NSPredicate、NSRegularExpression、NSString

      一、使用NSPredicate

    void useNSPredicate()
    {
        NSString *phoneNO = @"13182428488";
        NSString *regex = @"^1[3|4|5|7|8]\d{9}$";
        
        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
        BOOL isValid = [predicate evaluateWithObject:phoneNO];
        NSLog(@"%s %d", __FUNCTION__ ,isValid);
    }

      二、使用原生NSRegularExpression

    void useNSRegularExpression()
    {
        NSString *phoneNO = @"13182428488";
        NSError *error = NULL;
        NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^1[3|4|5|7|8]\d{9}$" options:NSRegularExpressionCaseInsensitive error:&error];
        NSTextCheckingResult *result = [regex firstMatchInString:phoneNO options:0 range:NSMakeRange(0, [phoneNO length])];
        if (result) {
            NSRange resultRange = [result rangeAtIndex:0];
            //从urlString中截取数据
            NSString *stringResult = [phoneNO substringWithRange:resultRange];
            
            NSLog(@"%s %@
    ", __FUNCTION__, stringResult);
        }
    }

      三、使用NSString

    void useNSString()
    {
        NSString *phoneNO = @"13182428488";
        NSRange range = [phoneNO rangeOfString:@"^1[3|4|5|7|8]\d{9}$" options:NSRegularExpressionSearch];
        if (range.location != NSNotFound) {
            NSLog(@"%s %@
    ", __FUNCTION__, [phoneNO substringWithRange:range]);
        }
    }
  • 相关阅读:
    147
    UVA12230 过河 Crossing Rivers
    重聚
    网络流24题 P2762 太空飞行计划问题
    网络流24题 P2756 飞行员配对方案问题
    网络流24题
    洛谷 P3369 【模板】普通平衡树
    LOJ #6280. 数列分块入门 4
    LOJ #6279. 数列分块入门 3
    LOJ #6278. 数列分块入门 2
  • 原文地址:https://www.cnblogs.com/pretty-guy/p/4259382.html
Copyright © 2011-2022 走看看