开发者

How to validate a phone number with + symbol in objective c?

开发者 https://www.devze.com 2023-02-17 04:02 出处:网络
I am so con开发者_C百科fused about the regex methods. My requirement is to validate a phone number that may contains + symbol in its prefix. Then all the charactors should be numerals only. For this,

I am so con开发者_C百科fused about the regex methods. My requirement is to validate a phone number that may contains + symbol in its prefix. Then all the charactors should be numerals only. For this, how can i create a regular expression in objective c.


I'm late answering, but I found an interesting solution when I recently have had the same problem. It uses the built-in cocoa methods instead of custom regex.

- (BOOL)validatePhoneNumberWithString:(NSString *)string {
    if (nil == string || ([string length] < 2 ) )
        return NO;

    NSError *error;
    NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypePhoneNumber error:&error];
    NSArray *matches = [detector matchesInString:string options:0 range:NSMakeRange(0, [string length])];
    for (NSTextCheckingResult *match in matches) {
        if ([match resultType] == NSTextCheckingTypePhoneNumber) {
            NSString *phoneNumber = [match phoneNumber];
            if ([string isEqualToString:phoneNumber]) {
                return YES;
            }
        }
    }

    return NO;
}


I wouldn't say this is a definitive answer but it should give you a start.

^\x2b[0-9]+

Will match any string that starts with a '+' and then any amount of numbers greater than 0.

For instance:

+441312002000  - Full phone number matched.
+4413120c2000  - +4413120 is matched.
++441312002000 - No match 
441312002000   - No Match

If there are further constraints on length etc then specifiy and I can update the regex. I agree with other poster about using RegexKitLite.


Use RegexKitLite, check the following http://regexkit.sourceforge.net/RegexKitLite/


^\+?[0-9]*$

should do:

^      # start of string
\+?    # match zero or one + characters
[0-9]* # match any number of digits
$      # end of string

To use the regex in a string, you'll need to double the backslashes: @"^\\+?[0-9]*$" should work according to other regex examples I've seen, but I don't know Objective-C and may be wrong about this.


This post nicely explains the regex -- http://blog.stevenlevithan.com/archives/validate-phone-number. You have to use "\" instead of "\" to prevent the Objective C preprocessor from interpreting regex escape codes as character string escape codes.

Here is the NSString you would use for the requested match

NSString *northAmRegexWithOptionalLeadingOne = @"^(?:\\+?1[-. ]?)?\\(?([2-9][0-8][0-9])\\)?[-. ]?([2-9][0-9]{2})[-. ]?([0-9]{4})$";


+*[0-9]{length of phone}. Should work.

0

精彩评论

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