当前位置: 首页 > 面试题库 >

使用JavaScript验证电话号码

傅峻
2023-03-14
问题内容

我在某些网站上找到了此代码,并且效果很好。它验证电话号码是以下格式之一:
(123)456-7890123-456-7890

问题是我的客户(我不知道为什么,也许是客户的东西)想添加另一种格式,即连续十个数字,如下所示: 1234567890

我正在使用这个正则表达式,

/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/

如何添加它还可以验证另一种格式?我对正则表达式不好。


问题答案:

首先,您的格式验证器显然仅适用于NANP(国家代码+1)数字。具有北美以外电话号码的人会使用您的应用程序吗?如果是这样,您就不想阻止这些人输入完全有效的[国际]号。

其次,您的验证不正确。NANP数字采用以下形式NXX NXX XXXX,其中N是数字2-9和X数字0-9。此外,区号和交换区不能采用形式N11(以两个结尾),以避免与特殊服务混淆,但非地理区号(800、888、877、866、855、900)中的数字可以进行N11交换。

因此,即使这不是有效的电话号码,您的正则表达式也会通过数字(123)1234566。您可以通过替换\d{3}为来解决此问题[2-9]{1}\d{2}

最后,我感觉到您正在验证Web浏览器中的用户输入。请记住,客户端验证[只是您提供给用户的便利;您仍然需要(再次)验证服务器上的所有输入。

TL; DR
不使用正则表达式来验证复杂的实际数据,例如电话号码或URL。使用专门的库(https://github.com/googlei18n/libphonenumber)。



 类似资料:
  • 问候覆花, 我试图编写一个正则表达式来验证形式为#########(10位)的电话号码,也就是说,这是有效的情况:1231231234或1111111。无效大小写是指小于10位或大于10位的数字串。 到目前为止,我使用的表达式是:“\d{10}” 不幸的是,它不能正确验证字符串是否为11位数。 有人知道实现这个任务的表达式吗?

  • 问题内容: 想要将电话号码设置为 10 位数字,如何使用Angular js做到这一点。 这是我尝试过的: 但是我没有收到验证错误。 问题答案: 试试这个:

  • 我在验证电话号码时遇到了问题。电话号码是一个10位数的字符串,应该填充在三个输入字段中第一个输入字段--仅有3位数(要求,只能接受数字和最大长度3)第二个输入字段--仅有3位数(要求,只能接受数字和最大长度3)第三个输入字段--仅有4位数(要求,只能接受数字和最大长度4)

  • 我是HTML,有谁能帮我验证一个电话号码只有'+'和数字值和电话号码不超过13个数字,并验证电子邮件与'@'和‘。我不想使用javascript

  • 我想弄清楚这个验证手机号码到我的Android系统是如何工作的。 我已经添加了代码和whant来验证46123456789,但最后一个号码(9)没有添加到电话号码中。 我用的是: 我是不是错过了什么

  • 问题内容: 编辑: 我已经混合并修改了下面给出的两个答案,以形成完整的功能,它现在可以完成我想要的,然后执行某些操作…所以我想我将它张贴在这里,以防其他任何人寻找相同的内容事情。 问题答案: 您可以使用先行断言来解决此问题。基本上,我们要说的是我想要一系列特定的字母(例如,ex,ext,x,extension),然后是一个或多个数字。但我们也想涵盖根本没有扩展的情况。 旁注,您不需要在诸如[\ s