是否可以创建一个掩码来处理非北美电话号码?

时间:2010-10-18 18:51:21

标签: phone-number

对于北美电话号码,(999)999-9999适用于输入掩码。

但是,我找不到能够处理非北美数字的好例子。我知道数字的数量可以变化,所以除了将其限制为仅数字之外,还有一个很好的例子吗?

6 个答案:

答案 0 :(得分:4)

真的没有通用面具:组合太多了。

唯一修复的是international country code,通常以+为前缀。

根据维基百科关于telephone numbering plans的文章,大多数国家都符合E.164编号方案。

如果我正确阅读了E.164,您可以安全地做出以下假设:

  • 国家代码:1-3位

  • 网络/区号和号码:最多19位

我会要求输入国家代码,并将“区号+数字”字段作为19位输入。

答案 1 :(得分:2)

您可以使用简单的RegEx推断国家/地区代码,例如:

^(?:(?:0(?:0|11)\s?)|+)([17]|2([07]|[1-689]\d)|3([0-469]|[578]\d)|4([013-9]|2\d)|5([1-8]|[09]\d)|6([0-6]|[789]\d)|8([12469]|[03578]\d)|9([0-58]|[679]\d))

其次是

(([\s\(\).-]{0,2}\d){4,13})$

提取国家号码。

为验证国家号码长度和有效性,您需要libphonenumber或类似物。

上面的长RegEx允许在国家/地区代码之前使用+,00或011,并且还必须删除数字中的标点符号。

答案 2 :(得分:0)

您没有提及您的申请,但使用regular expressions肯定可以。您可能需要take a look here

答案 3 :(得分:0)

不容易。请查看this page示例原因:如果您只查看德语电话号码,您会注意到有不同的格式,具体取决于您拨打号码的位置。你选哪一个?这只是德国电话号码;它们从大陆到大陆,从一个国家到另一个国家不同。

选择“仅限数字”可能是您最安全的选择。

答案 4 :(得分:0)

我会允许使用空格,破折号,斜线等等,但实际上只关心数字和可选的前导符号。其他一切,比如假设一定长度的某些块只是在寻找麻烦。

答案 5 :(得分:-1)

回答一个老问题可能不好。但libphonenumber似乎是您问题的一个很好的解决方案。