validation英国电话号码
如何使用正则表达式在C#中validation英国电话号码?
接受的答案中的正则表达式与所有有效的UK号码都不匹配,因为它的限制太多(同时打开了额外的数字范围,例如0203,它认为无效)。
英国电话号码遵循相当简单的规则:
-
它们可以是10或11位长(除了一些特殊数字,但你不太可能需要validation它们)
-
它们由区号和后面的本地号码组成。 区号的长度在3到5位之间变化,并且数字的本地部分占用10或11位的剩余长度。 出于所有实际目的,没有人只引用其编号的本地部分,因此您可以忽略现在的区别,除了它如何影响格式。
-
他们从零开始。
-
第二个数字可以是任何东西。 目前没有有效的数字从
04
或06
开始,但没有什么能阻止这些范围在未来投入使用。 (03
最近投入使用) -
它们可以使用一组括号和空格(一个或多个,位于不同的位置)进行格式化,但这些都是完全可选的。
因此,英国电话号码的基本工作表达式可能如下所示:
/^\(?0( *\d\)?){9,10}$/
这将检查10或11位数字,从零开始,在任何数字之间有格式空格,并且可选地检查区域代码的一组括号。
(是的,这会允许错误匹配的括号,因为我没有检查只有一个结束括号。强制执行此操作会使表达更加复杂,我现在没时间做这个,但感觉如果你愿意,可以随意添加这个)
顺便说一句,如果您想要进行其他过滤,您可能还需要注意以下规则:
-
从
09
和070
开始的号码是特殊价格号码,通常不作为私人号码给出,因此如果validation私人号码可以排除。 -
07
号码是可移动的(070
除外;见上文),如果你专门validation固定电话,可以排除。