所有英国电话号码正则表达式



我有一个正则表达式来检查所有英国数字。几乎所有英国号码都是 11 位数字,但英国也有一些数字有 10 位数字以 08 开头。

非工作号码的示例如下:

0800 757757 , 0800 200400 , 0800 444252, 0870 591 285.

如何扩展此正则表达式以检查上面的 10 位数字?

这是正则表达式: ^(((+44s?d{4}|(?0d{4})?)s?d{3}s?d{3})|((+44s?d{3}|(?0d{3})?)s?d{3}s?d{4})|((+44s?d{2}|(?0d{2})?)s?d{4}s?d{4}))(s?#(d{4}|d{3}))?$

好吧,为了匹配和验证维基百科列出的pasterns,你需要编写一个非常复杂的正则表达式。但是,对于上面列出的简单情况,请尝试

(08(00(s*ds*){3,6}|7(s*ds*){7}))

根据您的样本编号,它将匹配

0800 757757 
0800 200400 
0800 444252
0870 591 285
我不知道

您要解决什么特定问题,但这是我的 5 便士。

如果您尝试验证用户输入,那么您的方法与验证电子邮件地址一样错误。如果用户输入他的前伴侣的号码(完全有效!)只是为了好玩怎么办?还是不小心打错了最后一个数字?您将如何处理带有后缀的数字以绕过转板直接连接到像020 11112222,,1234这样的人,1234是分机号码?

如果您确实需要确保给定的号码有效并且属于特定用户,请发送带有某个唯一号码的文本,并要求用户稍后重新输入该号码。


另一方面,如果您试图从某些文本中获取电话号码,那么您将永远无法 100% 准确。如果可能的话,在单个正则表达式中处理所有情况将非常困难。您将需要处理诸如+44(0)20 xxxx yyyy44 020 xxxxyyyyy等数字。准备好获得误报和误报。

最新更新