В xcode кто-нибудь знает, как проверить, является ли строка таким номером телефона (123) 456-7890? - PullRequest
0 голосов
/ 02 октября 2011

Я пробовал это, и оно не работает:

range1 = NSMakeRange(0,[string length]);
NSRegularExpression *regex;
regex = [NSRegularExpression 
        regularExpressionWithPattern:@"([0-9]{3}) [0-9]{3}-[0-9]{4}"
        options:0 error:NULL];
range2 = [regex rangeOfFirstMatchInString:string options:0 range:range1];
if (NSEqualRanges(range1, range2)) {
    return YES;
}

// range2 всегда равен диапазону «not found». // Thx

1 Ответ

0 голосов
/ 27 февраля 2012

Я думаю, это должно быть '\\' (двойная косая черта), а не '\' (одиночная косая черта) ..

- (BOOL) validatePhone: (NSString *) candidate {
    NSString *phoneRegex = @"\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})";

    NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex];
    return [phoneTest evaluateWithObject:candidate];
}
...