ios中的电话号码格式掩码

ios中的电话号码格式掩码,ios,regex,Ios,Regex,我想要一个正则表达式或一些函数来标准化从我的ios应用程序输入的所有电话号码 因此输入如下 (212)555-5555 21255555 212-555-5555 212 555 5555 212-555 都被翻译成 (212)555-5555 下面的正则表达式是否可以将电话号码匹配为3个匹配组,然后将其格式化为正确的输出字符串 ^\D?(\D{3})\D?\D?(\D{3})\D?(\D{4})$ 正则表达式末尾的$符号是必需的还是会把事情搞砸 regex是在iOS中实现这一点的最佳方

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

因此输入如下

  • (212)555-5555
  • 21255555
  • 212-555-5555
  • 212 555 5555
  • 212-555
都被翻译成

  • (212)555-5555
下面的正则表达式是否可以将电话号码匹配为3个匹配组,然后将其格式化为正确的输出字符串

^\D?(\D{3})\D?\D?(\D{3})\D?(\D{4})$

正则表达式末尾的$符号是必需的还是会把事情搞砸


regex是在iOS中实现这一点的最佳方法吗?

^
和regex中的
$
匹配输入行的开头和结尾。您没有提供足够的信息来确定这些锚是否适用于此特定情况

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

您可以先替换所有非数字,检查正确性,然后格式化字符串,除非您的应用程序仅适用于美国和加拿大,你需要一个更通用的方法来格式化电话号码。这将是美国和加拿大的开始,所以这是好的