我在某个网站上找到了这段代码,它运行良好。它验证电话号码是以下格式之一: (123) 456-7890 或 123-456-7890
问题是我的客户(我不知道为什么,可能是客户的东西)想要添加另一种格式,连续十个数字,如下所示: 1234567890 。
我正在使用这个正则表达式,
/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/
我如何添加它也验证另一种格式?我不擅长正则表达式。
首先,您的格式验证器显然只适用于NANP(国家代码 +1)号码。电话号码来自北美以外的人是否会使用您的应用程序?如果是这样,您不想阻止这些人输入完全有效的 [国际] 号码。
其次,您的验证不正确。NANP 数字采用数字 2-9 和数字 0-9NXX NXX XXXX的形式。此外,区号和交换可能不采用这种形式(以两个 1 结尾)以避免与特殊服务混淆, 但 非地理区号(800、888、877、866、855、900)中的号码可能有交换。N``X``N11 __N11
NXX NXX XXXX
N``X``N11
N11
因此,您的正则表达式将传递数字 (123) 123 4566,即使它不是有效的电话号码。您可以通过替换为来解决此\d{3}问题[2-9]{1}\d{2}。
\d{3}
[2-9]{1}\d{2}
最后,我感觉您正在验证 Web 浏览器中的用户输入。请记住,客户端验证只是您为用户提供的一种便利 ;您仍然需要(再次)验证服务器上的所有输入。
TL;DR 不使用正则表达式来验证复杂的真实数据,例如电话号码或URL。使用专门的图书馆。