首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证电话号码ios

验证电话号码ios
EN

Stack Overflow用户
提问于 2012-11-01 19:28:10
回答 9查看 51.4K关注 0票数 27

我需要验证一个国际电话号码。

我知道验证国际电话号码很困难,所以我将保持简单:

+或00,然后是6-14个数字

我当前使用正则表达式的代码由于某种原因不能工作,我不能解决。它只是说它不能打开正则表达式并崩溃。

下面是我当前的代码:

代码语言:javascript
复制
NSString *phoneRegex = @"^[\+(00)][0-9]{6,14}$";
NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex];

BOOL phoneValidates = [phoneTest evaluateWithObject:phoneNumber];

我哪里错了?

谢谢!

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-11-01 20:11:17

代码语言:javascript
复制
NSString *phoneRegex = @"^((\\+)|(00))[0-9]{6,14}$";

这种方式更好一点。如果你转义"\“,你的代码也能正常工作。

票数 40
EN

Stack Overflow用户

发布于 2015-05-21 03:41:28

复制粘贴验证电话号码的方法:

代码语言:javascript
复制
- (BOOL)validatePhone:(NSString *)phoneNumber
{
    NSString *phoneRegex = @"^((\\+)|(00))[0-9]{6,14}$";
    NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex];

    return [phoneTest evaluateWithObject:phoneNumber];
}

或用于验证电话号码的开源

https://github.com/iziz/libPhoneNumber-iOS

票数 16
EN

Stack Overflow用户

发布于 2012-11-01 19:36:50

这取决于你想要的严格程度,看起来这个正则表达式并不是特别严格。此正则表达式表示:

从一行开头匹配1+(或者可能是1或0)开始,这似乎不明确(但可能不取决于实现),因为捕获括号:()打破了+和?之间的关系。可能放错地方:匹配任何数字0-9,1或0乘以6-14次,然后匹配一个数字0-9,然后是行尾。你也注意到,任何反斜杠都必须加倍...@"\b“表示单词边界。你可能想试试像这样的..。

代码语言:javascript
复制
@"\\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  55555
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13176083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档