regex - 美国电话号码验证

标签 regex algorithm validation phone-number

我有一个网站表格,要求输入美国电话号码以供后续使用,在这种情况下这是非常必要的。我想尝试消除输入垃圾数据的用户 330-000-0000。我已经看到第三方的一些选项可以为您验证电话号码,但是我不知道这是否是这种情况下的最佳选择。但是,如果您每个人都使用过这些第三方之一,并且可以提出建议,我们也将不胜感激。

不过,我正在考虑根据一组规则检查号码,以尽量减少收到的垃圾电话号码。

  • 不是 555 号码
  • 不包含 7 个相同的数字
  • 有效的区号(这是现成的)
  • 不是 123-1234 或 123-4567
  • 我想我也可以数出 867-5309(呵呵 *)

在您能想到的任何情况下,这会导致不允许用户输入他们的电话号码吗?您能想到电话号码不应包含的任何其他规则吗?还有其他想法吗?

最佳答案

在我看来,您为此付出了超出其应有的努力。考虑:

如果您的目的是防止输入错误的电话号码,那么只需一个非常简单的检查,您就可以发现超过 90% 的错误。

如果您的目的是试图强制用户提供一个有效号码,无论他们是否愿意提供该信息,那么您就承担了一项无望的任务 - 即使您能够访问 100% 准确,向上到第二个电信公司数据库来验证输入的确切号码当前是否有效,您仍然无法保证他们给您的号码是他们自己的号码。再一次,一个简单的检查将挫败大多数输入虚假号码的人,但那些愿意尝试超过两三次的人找到一种方法来挫败您获取他们号码的企图。

无论哪种方式,一个简单的测试都会给你带来好的结果,而进入更复杂的规则集将占用越来越多的时间,同时为你提供的好处越来越少(同时还可能增加误报,如“七个相同数字”和 867-5309 个案例)。

关于regex - 美国电话号码验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/175488/

相关文章:

javascript - 当用户键入时 bootstrap 4 表单验证

validation - 如何以编程方式验证 BPEL?

regex - Sublime Text 中 >= 和 <= 运算符的语法高亮显示

javascript - 捕获并替换多行字符串中模式的前 N ​​次出现

java - 正则表达式删除除关键字周围和引号之间的所有空格

c++ - 二叉树采访: implement follow operation

javascript - 使用 getElementById 验证复选框数组

Python - 在使用正则表达式查找句点(句号或 .)时,我应该使用字符串前缀 r 吗?

algorithm - 减少某些边缘的容量将减少最大流量

algorithm - 如何预测具有异构 table 的排队系统中的等待时间?