ios中的电话号码格式掩码

Posted

技术标签:

【中文标题】ios中的电话号码格式掩码【英文标题】:phone number format mask in ios 【发布时间】:2014-07-03 21:13:33 【问题描述】:

我想要一个正则表达式或一些函数来标准化从我的 ios 应用程序输入的所有电话号码。

因此输入如下

(212)555-5555 2125555555 212-555-5555 212 555 5555 212-5555555

全部翻译成

(212) 555-5555

以下正则表达式是否可以将电话号码匹配到 3 个匹配组中,然后我可以将其格式化为正确的输出字符串?

^\D?(\d3)\D?\D?(\d3)\D?(\d4)$

是否需要正则表达式末尾的 $ 符号,还是会搞砸?

正则表达式是在 iOS 中执行此操作的最佳方式吗?

【问题讨论】:

可以先替换所有非数字,检查正确性,再格式化字符串 除非您的应用仅适用于美国和加拿大,否则您将需要更通用的方法来格式化电话号码。 这对我们和加拿大来说都可以,这样很好 【参考方案1】:

^$ 在正则表达式中匹配输入行的开头和结尾。您没有提供足够的信息来确定这些锚点是否适合这种特殊情况。

由于您在 iOS 中工作,您是否看过 NSDataDetector 类?它提供了检测字符串的机制,这些字符串可能是多种不同格式的有效电话号码。这将为您提供与用户在其设备上的许多其他应用程序中看到的行为相匹配的电话号码检测。 NSDataDetector 不提供重新格式化电话号码的机制,因此您仍需要确定如何重新格式化检测到的可能电话号码(可能包含多于或少于 10 位数字)的字符串。如果您这样做,您可能应该回退到保留任何检测到的与您的预期格式之一不匹配的数字的原始格式。

【讨论】:

以上是关于ios中的电话号码格式掩码的主要内容,如果未能解决你的问题,请参考以下文章

EditText 的 Android 电话号码掩码

子网掩码与ip地址的关系

Angular 2 - 输入掩码:输入框显示格式化值,而模型保留未格式化值

如何将手机号码中间做掩码,四个常用文本操作技巧

电话号码的jQuery输入掩码

仅在输入掩码 jquery 中从某个号码开始验证电话号码