2

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

Gmail 注册页面链接

但是各国电话号码之间的差异很大,因此很难为此构建正则表达式。

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

SO中的问题

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

4

4 回答 4

4

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

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

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

您也可以在那里作弊,尝试连接到他们的 ajax 服务并自行向他们的检查器发出请求。这将是一种简单的方法,但确实不可靠,甚至可能不合法。

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

于 2013-09-12T09:11:29.927 回答
3

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

此时,要实现类似于 Google 注册页面上的表单的功能,您需要将 lib 与一些编码输入连接(以提供可供选择的标志和国家代码)。intl-tel-input是专门为此设计的。基本上是:

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

它使用上面提到的 Google 的 libphonenumber。所以,省略你的正则表达式:D

于 2015-02-28T21:13:27.580 回答
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"},
于 2013-09-12T09:36:52.323 回答
0

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

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

(+) 符号 - 是强制性的

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

d{6,11} - 电话号码

印度手机号码可以用^+91[6789]\d{9}$查询

于 2013-09-12T13:03:13.000 回答