手机号码验证(国际)

时间:2013-09-12 09:03:02

标签: javascript jquery regex validation

我正在尝试对手机号码进行验证检查,有点类似于gmail实施的内容。

Gmail signup page link

但是,不同国家/地区的电话号码差异很大,因此很难为此制作正则表达式。

我在这里查看了一些q,但它们适用于某个国家或某个国家, 请提一下,如果我错过了。

question in SO

主要是我想实现gmail用手机号码做的事情。

4 个答案:

答案 0 :(得分:4)

在您提供的页面中,Google使用ajax检查这些电子邮件。 查看请求内容:

{"input01":{"Input":"RecoveryPhoneNumber","RecoveryPhoneNumber":"+44 12345678","RecoveryPhoneCountry":"GB"},"Locale":"pl"}

我的猜测是他们没有任何神奇的普遍正则表达式 - 他们可能拥有整个正则表达式数据库 - 每个国家/地区都匹配电话号码。我的猜测是你也可以这样做,但你必须努力创建这样的数据库(如果没有人这样做过)。

你也可以欺骗自己的方式并尝试连接到他们的ajax服务,并自己向他们的检查器发出请求。这将是一种简单的方法,但实际上并不可靠,甚至可能不合法。

编辑:有很多页面可以找到示例。困难的部分是收集所有正则表达式。

答案 1 :(得分:2)

不知道您是否编写了自己的lib用于手机号码验证,但现在我们已经libphonenumber了。它确实由Google提供,允许您验证,解析和格式化电话号码。它适用于Java,c ++或Javascript,但也有fork for PHP

此时,要在Google的注册页面上实现类似于表单的内容,您需要将lib与某些编码输入连接(以提供标记和国家/地区代码供您选择)。 intl-tel-input专为此而设计。基本上是:

  

用于输入和验证国际电话的jQuery插件   数字。它为任何输入添加了一个标记下拉列表,列出了所有输入   国家及其旗帜旁边的国际拨号代码。

它使用了上面提到的Google的libphonenumber。所以,遗漏你的正则表达:D

答案 2 :(得分:1)

对于国际手机号码,请使用以下验证。

<强> ^ + \ d {1,5} \ d {6,11} $

(+)符号 - 是强制性的

d {1,5} - 对于ISD代码

d {6,11} - 电话号码

但如果用户输入了91(INDIA)ISD CODE并输入了6位数的手机号码, 它将被验证为有效号码。

印度手机号码可以通过 ^ + 91 \ d {10} $

查看

使用jquery(二维数组)而不是正则表达式。 因为有更多的ISD-Number组合。

要验证它,首先检查输入的ISD代码(数组项的第一个elemnet并与移动数字长度(数组项中的第二个元素)进行比较,

这样你就可以获得存储在第二项数组中的每个isd代码的移动数字长度。

我们可以为多个国家/地区执行此操作,并且将来也可以配置。

答案 3 :(得分:0)

巨人正在制作正确的正则表达式,但是在将国家代码放在他们的数据库之后 您可以通过他们的代码找到它,以了解它们如何构建国家/地区代码和标记

"in":{code:"91",name:"India",imgPosition:"-1694px"},id:{code:"62",name:"Indonesia",imgPosition:"-1958px"},ir:{code:"98",name:"Iran",imgPosition:"-2013px"},iq:{code:"964",name:"Iraq",imgPosition:"-649px"},ie:{code:"353",name:"Ireland",imgPosition:"-1969px"},