我对正则表达式方法很困惑。我的要求是验证其前缀中可能包含+符号的电话号码。然后所有的字符应该只是数字。为此,我如何在目标c中创建正则表达式。
答案 0 :(得分:3)
我迟到了回答,但是当我最近遇到同样的问题时,我找到了一个有趣的解决方案。它使用内置的可可方法而不是自定义正则表达式。
- (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;
}
答案 1 :(得分:0)
使用RegexKitLite,请检查以下http://regexkit.sourceforge.net/RegexKitLite/
答案 2 :(得分:0)
我不会说这是一个明确的答案,但它应该给你一个开始。
^\x2b[0-9]+
将匹配以“+”开头的任何字符串,然后匹配任何大于0的数字。
例如:
+441312002000 - Full phone number matched.
+4413120c2000 - +4413120 is matched.
++441312002000 - No match
441312002000 - No Match
如果对长度等有进一步的限制,那么指定,我可以更新正则表达式。我同意其他关于使用RegexKitLite的海报。
答案 3 :(得分:0)
^\+?[0-9]*$
应该:
^ # start of string
\+? # match zero or one + characters
[0-9]* # match any number of digits
$ # end of string
要在字符串中使用正则表达式,您需要加倍反斜杠:@"^\\+?[0-9]*$"
应该根据我见过的其他正则表达式示例工作,但我不知道Objective-C可能是错误的关于这个。
答案 4 :(得分:0)
+*[0-9]{length of phone}
。应该工作。
答案 5 :(得分:0)
这篇文章很好地解释了正则表达式 - http://blog.stevenlevithan.com/archives/validate-phone-number。您必须使用“\”而不是“\”来阻止Objective C预处理器将正则表达式转义码解释为字符串转义码。
以下是您将用于请求的匹配的NSString
NSString *northAmRegexWithOptionalLeadingOne = @"^(?:\\+?1[-. ]?)?\\(?([2-9][0-8][0-9])\\)?[-. ]?([2-9][0-9]{2})[-. ]?([0-9]{4})$";