首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS中10位数字电话号码的正则表达式

iOS中10位数字电话号码的正则表达式
EN

Stack Overflow用户
提问于 2013-04-20 05:10:11
回答 1查看 4.2K关注 0票数 0

我正在尝试编写一个正则表达式来匹配一个不带任何其他字符的10位数字。例如:2345678901

第一个数字应该在2-9之间,其余9个数字可以是任意的

我尝试过编写不同的正则表达式,但都不起作用。

NSString *newString = textField.text字符串替换字符范围:字符串范围:字符串;

代码语言:javascript
运行
复制
//^([0-9]+)?(([0-9]{9})?)?$     (([2-9]{1})?)?(([0-9]{8,9})?)?
NSString *expression = [NSString stringWithFormat:@"^(([2-9]{1})?)?(([0-9]{8,9})?)?$"];

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:expression
                                                                       options:NSRegularExpressionCaseInsensitive
                                                                         error:nil];
NSUInteger numberOfMatches = [regex numberOfMatchesInString:newString
                                                    options:0
                                                      range:NSMakeRange(0, [newString length])];
if (numberOfMatches == 0) {
    return NO;
}

return YES;

`

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2013-04-20 05:12:12

与您需要的匹配的非常简单的正则表达式是

代码语言:javascript
运行
复制
^[2-9][0-9]{9}$

它匹配2..9范围内的第一个数字,以及0..9范围内的其他9个数字,总共10个数字。

请注意,此表达式适用于验证整个字符串,而不是部分字符串。当数字变为可用时,您无法在textField:shouldChangeCharactersInRange:replacementString:中使用它来验证数字。

在输入时验证输入的格式并不是一个好主意,因为用户可能会选择以任何顺序输入手机的数字,方法是在键入之前将光标移动到正确的位置。相反,您应该将UITextFieldkeyboardType属性设置为UIKeyboardTypeDecimalPad,并让用户根据需要键入任意数量的数字。在他们告诉你他们已经完成之前,不要限制他们的输入:他们可能想要粘贴数据,比如从记事本上粘贴数据,然后删除分隔符,或者在最后输入几个额外的数字,然后删除输入前面的部分。

相反,您应该在textFieldShouldEndEditing:方法中使用上述表达式。当正则表达式匹配时,返回YES;否则,返回NO,并向用户提供一些视觉反馈,以指示数字需要更改。阅读UITextFieldDelegate文档中textFieldShouldEndEditing:方法的讨论部分。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16113541

复制
相关文章

相似问题

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