2011-03-21 54 views
1

什么是全球最广泛接受的电话号码格式。什么是普遍认可的电话号码格式

我根据美国格式验证电话号码,那么非美国用户将很难进入他们的国家,如果我反之亦然,那么美国用户将会很难。

我正在寻找一种通用的电话号码格式,我将通过JS和PHP进行验证。

+0

我想你可以做的唯一的事情是确保它仅包含'+ ''''0-9'和'space' – JohnP 2011-03-21 13:04:51

+0

@JohnP:另外,“x”表示扩展名。例如。 12345x789是电话号码。 12345,extension 678. – 2011-03-21 13:18:49

+0

http://stackoverflow.com/questions/3805349/normalizing-validation-for-international-data-sets-in-a-database – Incognito 2011-03-21 13:22:46

回答

1

您需要根据用户的位置来区分用户。因此用户必须首先选择他的位置(例如美国),然后您需要根据美国格式验证他的电话号码。

+1

以及世界其他地方呢,有没有哪个wiki可以找到各个国家的电话格式。 – 2011-03-21 13:09:33

+0

恐怕你需要自己找到它,但嘿,我给你一个很棒的轮廓! :) – fabrik 2011-03-21 13:11:19

2

请不要验证任何超过有效字符(如所建议的,数字,破折号,加号和可能的空格/括号)。至少不要让你的验证成为强制性的:如果电话号码不匹配,只是警告用户。你无法匹配每种潜在的格式:这些格式不仅因国家而异,而且在某种程度上也受到电话公司和地区的影响(至少在数字方面)。

验证的目的应该是帮助最终用户输入正确的信息。它要求你比他们知道得更多,并准备在什么时候正确的转变时改变你的确认。

+0

我还会添加一个'x'作为有效字符,以包含扩展名。例如:+1(777)444.5555 x12345。借调说,要完全验证电话号码是非常困难的。 – Zimzat 2011-03-21 13:24:41

+0

验证也必须针对预期用途。电话号码是否由手动拨号的人使用?或者作为替代主键?或(半)自动拨号,例如在电话簿里? 'x'在最后一种情况下不好,但不是前两种。第一个也是最后一个空间很好,但不是中间的情况。依此类推...... – 2011-03-21 13:39:43

2

您唯一可以验证的是它包含数字。数量的数量因国而异。

查看Local conventions for writing telephone numbers维基百科条。

+0

我将仅验证数字(最少6位数字)。它会照顾美国和非美国吗? – 2011-03-21 15:40:28

0

没有足够广泛的地方,它可以被看作是如果它不适合它的电话号码。格式'+' CountryCode ' ' (AreaCode ' ')? SubscriberNumber由国际电联标准化。 CountryCodeAreaCodeSubscriberNumber是数字序列。

然后,在德国,AreaCode通常以(0)开头(表示如果您不拨打CountryCode,则必须拨打该号码)。人们也倾向于将SubscriberNumber的数字进行分组,或者将各种标点符号放在其中(无论用于什么目的)。

总而言之,验证电话号码是一件麻烦事。要么做得非常严格,惹恼你的用户,要么做最低限度的(至少包含一位数字)。

3

如果你看看rfc3966它解释什么是有效的电话号码(具体为section 5.1)。

然而,据说你不应该担心用户输入电话号码的方式,在提交时删除所有格式化,验证号码,然后将其存储而不用格式化。

处理从数据库中拉出数字以显示数字时,重新格式化数字。

+0

是的,+ NNNN ...是通用格式,应该被任何电话号码输入系统接受。不幸的是,太多糟糕的网络开发人员忘记了电话号码应该以“+”开头。 – sorin 2016-02-18 15:59:44