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

时间:2016-03-11 15:27:30

标签: c# regex

我有一个检查所有英​​国号码的正则表达式。几乎所有英国的数字都是11位数字,但英国有一些数字从08开始有10位数字。

非工作号码的例子如下:

  

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

0800 757757 
0800 200400 
0800 444252
0870 591 285

答案 1 :(得分:0)

我不知道你要解决的是什么特别的问题,但这是我的5便士。

如果您尝试验证用户输入,那么您的方法与validating an email address一样错误。如果用户为了好玩而输入(完全有效!)他的前伴侣号码会怎么样?或意外错误输入最后一位数字?您如何处理带有后缀的数字,以绕过swichboards直接连接到020 11112222,,1234,其中1234是分机号码?

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

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