Php 使用regex管理电话号码验证漏洞

Php 使用regex管理电话号码验证漏洞,php,regex,Php,Regex,我已经写了regex来验证美国和英国的电话号码。它运行良好,但并非适用于所有情况 它不应该过滤合法的数字,如:12345678或123456789,1989等。我可能需要验证US-UK的每个区号的前三位数字。我说得对吗 以下是所有英国区号的列表:大列表。我需要将所有这些都包含在正则表达式中吗 问题:它还应该过滤这样的漏洞:203453seven67 如何做到这一点 以下是一个例子: 正则表达式: $pattern = '((^\(?(?:(?:0(?:0|11)\)?[\s-]?\(?|\+)4

我已经写了regex来验证美国和英国的电话号码。它运行良好,但并非适用于所有情况

它不应该过滤合法的数字,如:
12345678
123456789
1989
等。我可能需要验证
US-UK
的每个区号的前三位数字。我说得对吗

以下是所有英国区号的列表:大列表。我需要将所有这些都包含在正则表达式中吗

问题:它还应该过滤这样的漏洞:203453seven67

如何做到这一点

以下是一个例子:

正则表达式:

$pattern = '((^\(?(?:(?:0(?:0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?\(?(?:0\)?[\s-]?\(?)?|0)(?:\d{2}\)?[\s-]?\d{4}[\s-]?\d{4}|\d{3}\)?[\s-]?\d{3}[\s-]?\d{3,4}|\d{4}\)?[\s-]?(?:\d{5}|\d{3}[\s-]?\d{3})|\d{5}\)?[\s-]?\d{4,5}|8(?:00[\s-]?11[\s-]?11|45[\s-]?46[\s-]?4\d))(?:(?:[\s-]?(?:x|ext\.?\s?|\#)\d+)?)$)|(\(?[2-9][0-8][0-9]\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}))';

为确保电话号码正确,请避免使用regex,并使用一些标准库,这些库可以帮助您验证电话号码


我建议

您是否正在尝试验证不在列表中的内容?如果您只能使用NANP,则
^(?:(?:\+?1\s*(?:[.-]\s*))?(?:(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]‌​)\[2-9]1[02-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})$
。谢谢。不,不仅是NANP的,还有所有的美国和英国号码。它验证了所有的美国和英国号码吗?有经验吗?它可以很好地验证美国号码。有一些英国号码系列缺失,但他们已经更新了数据。因此,如果你使用最新版本,它应该适用于大多数英国号码。还有maintai我们在这里使用的libphone的ned版本:它会处理英国号码,但我需要更快的响应。它比regex快吗?你不能在每次新的号码序列被碰撞时验证号码或更新你的regex。库会处理它。为了回答你的问题,它会比regex慢,但多少,我不知道。