iOS:正規表現

3787 ワード

OSには、正規表現のマッチングNSPredicate、NSRegularExpression、NSStringの3つの方法があります
一、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]); } }