3

我们有一个联系人及其电话号码的数据库,我们想验证这些电话号码是否真的存在。我用谷歌搜索并没有找到任何解决方案。我正在寻找以下之一,尽管我更喜欢第一个选项。

  1. 使用现有的电话库编写代码以检查联系人的电话是否真实存在。可能我们让电话响一两次

  2. 使用可用于拨打电话并手动验证用户联系号码的现有软件。

任何帮助是极大的赞赏。

4

4 回答 4

6

我一直在开发一个向电话号码发送短信的应用程序。我发现短信实际上是从 STMP 处理的。当您发送短信时,它会发送到

1231231234@provider.com

例如

4056643241@vtext.com将参考Verizon的号码。

然后,假设您可以通过查询每个服务提供商并检查响应来检查号码是否存在。不确定这是否适用于固定电话。

您可以在此处找到服务提供商列表

我将遍历列表中的每个提供者并检查您是否可以提取响应。如果你不能,是时候换档了——电话簿将包含固定电话号码。我们已经消除了美国电网上的所有号码,除了任何不发短信的手机,这种情况越来越少。

更新:这种技术是有效的,但如果被滥用,在某些州可能是非法的,并且您可能会产生信息费用。这应该只用于检查一些选定的数字,而不是试图对未同意使用其信息的用户进行剖析。

于 2013-10-21T19:01:46.653 回答
2

您的问题涉及很多关于您的要求的模糊性。然而,让我们得到一些一般的想法。

只要没有安装适当的更新过程,任何关于自然事实的存储库都会立即老化。这是一种基本事实,如果您牢记没有内在的过程可以阻止人们在更改他们的号码时更新他们的号码,您可以从中得出一些结论:

一个。包括这些现有软件在内的任何存储库都将包含过时的数据 b. 完成电话号码验证后,这些数据将老化

根据您的要求,您可以从这些结论中得出以下结论:

  1. 如果您的目标是销售该数据库
    • 您要么需要一个非常快速和/或并行的验证过程,您可以在看到之前将其应用于所有短数字或
    • 如果您的目标是持续销售,您需要一个持续的验证过程->如果不成为全球参与者(例如亚马逊或 ebay),我看不到一种实用的方法来实现它
  2. 如果您的目标是自己使用数据库,则验证时间应尽可能接近您的使用时间。最佳情况是,您的验证和使用时间是相同的。但是不要忘记更新——所以每当有人输入“盲”号码时,他们必须通知您的数据库。
  3. 第三方电话号码存储库可能与您的质量相同,如果物有所值,应该会提出问题

对于随机生成美国电话号码,我将从那里开始:

http://en.wikipedia.org/wiki/North_American_Numbering_Plan

于 2013-10-18T12:52:03.403 回答
1

也许您可以使用Asterisk并使用连接器连接到 MySQL

这不是一个真正的答案,而只是一个想法。

也许你可以在他们的论坛上询问社区

于 2013-10-22T11:01:11.670 回答
1

你可以检查

//10位电话号码 ^(?:+?1\s*(?:[.-]\s*)?)?(?:(\s*([2-9]1[02-9]) |[2-9][02-8]1|[2-9][02-8][02-9])\s*)|([2-9]1[02-9]|[2- 9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?([2-9]1[02 -9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9 ]{4})$

//10位电话号码,允许分机 ^(?:+?1\s*(?:[.-]\s*)?)?(?:(\s*([2-9]1[02 -9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*)|([2-9]1[02-9]| [2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?([2-9] 1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([ 0-9]{4})(?:\s*(?:#|x.?|ext.?|extension)\s*(\d+))?$

//7 位或 10 位电话号码 ^(?:(?:+?1\s*(?:[.-]\s*)?)?(?:(\s*([2-9]1 [02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*)|([2-9]1[02-9 ]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([ 2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s* )?([0-9]{4})$

//7位或10位电话号码,允许分机号 ^(?:(?:+?1\s*(?:[.-]\s*)?)?(?:(\s*([2- 9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*)|([2-9]1[ 02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?) ?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-] \s*)?([0-9]{4})(?:\s*(?:#|x.?|ext.?|extension)\s*(\d+))?$

//10 位电话号码,允许虚名(字母数字) ^(?:+?1\s*(?:[.-]\s*)?)?(?:(\s*([2-9]) 1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*)|([2-9]1[02- 9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?([2 -9a-z]1[02-9a-z]|[2-9a-z][02-9a-z]1|[2-9a-z][02-9a-z]{2})([ 0-9a-z]{4})$

//10 位电话号码,允许虚荣,末尾允许额外字符 ^(?:+?1\s*(?:[.-]\s*)?)?(?:(\s*([2 -9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*)|([2-9]1 [02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)? ([2-9a-z]1[02-9a-z]|[2-9a-z][02-9a-z]1|[2-9a-z][02-9a-z]{2} )([0-9a-z]{4})([0-9a-z]*)$

另外,我找到了检查美国号码的正则表达式。

^([0-9]{3})[0-9]{3}-[0-9]{4}$ 和

^[0-9]{3}-[0-9]{3}-[0-9]{4}$ 是使用交替 ((...|...)):将它们指定为两个 -单独的选项:

^(([0-9]{3})|[0-9]{3}-)[0-9]{3}-[0-9]{4}$ 顺便说一句,当美国人把这个地区括号中的代码,我们实际上在后面放了一个空格;例如,我会写 (123) 123-1234,而不是 (123)123-1234。所以你可能想写:

^(([0-9]{3}) |[0-9]{3}-)[0-9]{3}-[0-9]{4}$

我希望它适用于 wiki 中列出的所有格式

http://en.wikipedia.org/wiki/Category:Telephone_numbers_in_the_United_States

您还可以查看 http://regexlib.com/(A(3k11t-l-bx51TbStx_502eQq_kMPKrbAUku29jOowfM7aos6m8LTywGmKyLQ9PvcrjtaYPs4AczP5NXz2h7ZVMCGJSGrq8WHjaHgNAZ4GUc1))/DisplayPatterns.aspx?catAspxindex=6&categoryId=7

于 2013-10-22T09:10:30.190 回答