如何检查美国是否确实存在电话号码

时间:2013-10-11 08:08:41

标签: validation

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

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

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

  3. 非常感谢任何帮助。

4 个答案:

答案 0 :(得分:5)

我一直致力于一个向手机号码发送短信的应用程序。我发现文本消息实际上是从STMP处理的。当您发送短信时,它会被发送到

1231231234@provider.com

例如

4056643241@vtext.com会引用Verizon的号码。

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

您可以找到服务提供商列表here

我会遍历列表中的每个提供程序,并检查是否可以提取响应。如果你不能,时间换档 - 电话目录将包含固定电话号码。除了没有发短信的手机外,我们已经取消了美国网格上的每个号码,这种情况越来越少了。

更新:此技术有效,但在某些州滥用可能会非法,并且您可能会收取短信费用。这应仅用于检查一些选择的号码,而不是试图分析未经同意使用其信息的用户。

答案 1 :(得分:2)

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

只要没有安装正确的更新过程,任何有关自然事实的存储库都会立即老化。这是一个基本的事实,你可以从那里得出一些结论,如果你记住,没有内在的过程可以阻止人们在他们改变时更新他们的数字:

一个。任何包含这些现有软件的存储库都会有过时的数据 湾第二,您完成了电话号码验证,这些数据将会老化

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

  1. 如果您的目标是销售该数据库
    • 您需要一个非常快速和/或并行的验证流程,您可以在扣除之前将所有数字应用于所有数字或
    • 如果您打算进行销售,则需要持续的验证流程 - >如果不是一个全球性的参与者(例如像亚马逊或ebay),我没有看到实现这种方法的实用方法。
  2. 如果您的目标是自己使用数据库,则验证时间应尽可能接近您的使用时间。最佳的是,您的验证和使用时间是相同的。但是不要忘记更新 - 所以每当有人输入“盲”号时,他们必须通知你的数据库。
  3. 第三方电话号码库可能与您的第三方电话号码存储库质量相同,如果值得的话,应提出问题
  4. 对于随机生成的美国电话号码,我会从那里开始:

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

答案 2 :(得分:1)

你可以检查

// 10位数的电话号码 ^(:+ 1 \ S *(:[.-] \ S *)????)(?:?(\ S *([2-9] 1 [02-9] | [2-9] [ 2月8日] 1 | [2-9] [2月8日] [02-9])\ S *)|([2-9] 1 [02-9] | [2-9] [2月8日] 1 | [2-9] [2月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})$ <? / p>

//允许10位数的电话号码 ^(:+ 1 \ S *(:[.-] \ S *)????)(?:?(\ S *([2-9] 1 [02-9] | [2-9] [ 2月8日] 1 | [2-9] [2月8日] [02-9])\ S *)|([2-9] 1 [02-9] | [2-9] [2月8日] 1 | [2-9] [2月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 |扩展名)\ S *(\ d +))$

// 7位或10位电话号码 ????^(:(:+ 1 \ S *(:[.-] \ S *))(:????(\ S *([2-9] 1 [02-9] | [2- 9] [2月8日] 1 | [2-9] [2月8日] [02-9])\ S *)|([2-9] 1 [02-9] | [2-9] [02 -8] 1 | [2-9] [2月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] [2月8日] 1 | [2-9] [2月8日] [02-9])\ S *)|([2-9] 1 [02-9] | [2-9] [02 -8] 1 | [2-9] [2月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 |扩展名)\ S *(\ d +))$

//允许使用10位数的电话号码,虚荣(字母数字) ^(:+ 1 \ S *(:[.-] \ S *)????)(?:?(\ S *([2-9] 1 [02-9] | [2-9] [ 2月8日] 1 | [2-9] [2月8日] [02-9])\ S *)|([2-9] 1 [02-9] | [2-9] [2月8日] ?1 | [2-9] [2月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] [ 2月8日] 1 | [2-9] [2月8日] [02-9])\ S *)|([2-9] 1 [02-9] | [2-9] [2月8日] ?1 | [2-9] [2月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?cattabindex=6&categoryId=7&AspxAutoDetectCookieSupport=1

答案 3 :(得分:1)

也许您可以使用Asterisk并使用connector to MySQL

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

也许您可以通过forum

询问社区