对于北美电话号码,(999) 999-9999 非常适合作为输入掩码。
但是,我找不到一个可以处理非北美数字的好例子。我知道位数可能会有所不同,所以除了将其限制为仅位数之外,在任何地方都有一个很好的例子吗?
对于北美电话号码,(999) 999-9999 非常适合作为输入掩码。
但是,我找不到一个可以处理非北美数字的好例子。我知道位数可能会有所不同,所以除了将其限制为仅位数之外,在任何地方都有一个很好的例子吗?
您可以使用简单的 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 或类似的。
上面的长正则表达式允许在国家代码前加上 +、00 或 011,并在数字中选择标点符号,这些标点符号也必须去掉。
不容易。看看这个页面的例子为什么:如果你只看德国电话号码,你会注意到有不同的格式,具体取决于你从哪里拨打电话号码。你选哪一个?这仅适用于德国电话号码;它们因大陆而异,因国家而异。
使用“仅数字”可能是您最安全的选择。
我会允许空格、破折号、斜杠和所有这些,但实际上只关心数字和可选的前导 + 符号。其他一切,例如假设特定长度的某些块只是在自找麻烦。
回答一个老问题可能是不好的。但是libphonenumber似乎是您问题的一个很好的解决方案。