Objective-c regex to check phone number [duplicate] Objective-c regex to check phone number [duplicate] objective-c objective-c

Objective-c regex to check phone number [duplicate]


You can use a regular expressions library (like RegexKit, etc), or you could use regular expressions through NSPredicate (a bit more obscure, but doesn't require third-party libraries). That would look something like this:

NSString *phoneNumber = ...;NSString *phoneRegex = @"[235689][0-9]{6}([0-9]{3})?"; NSPredicate *test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex]; BOOL matches = [test evaluateWithObject:phoneNumber];

If you're on iPhone, then iOS 4 introduced NSRegularExpression, which would also work. The NSPredicate approach works on both Mac and iPhone (any version).


Please don't use your own regex for the phone-number. Don't.

The format of phone numbers changes across the country, and your app might be used outside of your own country.

Instead, use what Apple provides, as Josh says. See here.


For those searching for phone extraction, you can extract the phone numbers from a text, for example:

NSString *userBody = @"This is a text with 30612312232 my phone";if (userBody != nil) {    NSError *error = NULL;    NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypePhoneNumber error:&error];    NSArray *matches = [detector matchesInString:userBody options:0 range:NSMakeRange(0, [userBody length])];    if (matches != nil) {        for (NSTextCheckingResult *match in matches) {            if ([match resultType] == NSTextCheckingTypePhoneNumber) {                DbgLog(@"Found phone number %@", [match phoneNumber]);            }        }    }}

`