开发者

Objective-c regex to check phone number [duplicate]

This question already has answers here: Closed 10 years ago.

Possible Duplicate:

A comprehensive regex for phone number validation

How to validate a phone number (NSString *) in objective-c? Rules:

Thanks


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]);
            }
        }
    }
}

`


The NSDataDetector class, available in iOS 4.0 and later, is a specialized subclass of NSRegularExpression that has explicit support for detecting phone numbers.


In iOS 4.0+ there are built in classes to do this, NSRegularExpression

In everything else you can either use a 3rd party RegEx library, or use an NSPredicate if your needs are narrow enough

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜