我需要验证一个国际电话号码。
我知道验证国际电话号码很困难,所以我将保持简单:
+或00,然后是6-14个数字
我当前使用正则表达式的代码由于某种原因不能工作,我不能解决。它只是说它不能打开正则表达式并崩溃。
下面是我当前的代码:
NSString *phoneRegex = @"^[\+(00)][0-9]{6,14}$";
NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex];
BOOL phoneValidates = [phoneTest evaluateWithObject:phoneNumber];我哪里错了?
谢谢!
发布于 2012-11-01 20:11:17
NSString *phoneRegex = @"^((\\+)|(00))[0-9]{6,14}$";这种方式更好一点。如果你转义"\“,你的代码也能正常工作。
发布于 2015-05-21 03:41:28
复制粘贴验证电话号码的方法:
- (BOOL)validatePhone:(NSString *)phoneNumber
{
NSString *phoneRegex = @"^((\\+)|(00))[0-9]{6,14}$";
NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex];
return [phoneTest evaluateWithObject:phoneNumber];
}或用于验证电话号码的开源库
发布于 2012-11-01 19:36:50
这取决于你想要的严格程度,看起来这个正则表达式并不是特别严格。此正则表达式表示:
从一行开头匹配1+(或者可能是1或0)开始,这似乎不明确(但可能不取决于实现),因为捕获括号:()打破了+和?之间的关系。可能放错地方:匹配任何数字0-9,1或0乘以6-14次,然后匹配一个数字0-9,然后是行尾。你也注意到,任何反斜杠都必须加倍...@"\b“表示单词边界。你可能想试试像这样的..。
@"\\b[\\d]{3}\\-[\\d]{3}\\-[\\d]{4}\\b"
would I think match your example, but it wouldn't match
(555) 555 - 5555 or
555.555.5555 or
+44 1865 55555https://stackoverflow.com/questions/13176083
复制相似问题