验证英国电话号码[关闭]

Posted

技术标签:

【中文标题】验证英国电话号码[关闭]【英文标题】:Validate a UK phone number [closed] 【发布时间】:2010-09-07 03:20:53 【问题描述】:

如何在 C# 中使用正则表达式验证英国电话号码?

【问题讨论】:

【参考方案1】:

接受答案中的正则表达式与所有有效的英国号码都不匹配,因为它过于严格(同时开放了其他号码范围,例如 0203,它认为这是无效的)。

英国电话号码遵循相当简单的规则:

它们的长度可以是 10 位或 11 位(一些特殊数字除外,但您不太可能需要验证这些数字)

它们由区号和本地号码组成。区号的长度在 3 位到 5 位之间变化,号码的本地部分占用 10 位或 11 位的剩余长度。出于所有实际目的,没有人只引用其数字的本地部分,因此您现在可以忽略区别,除了它如何影响格式。

它们从零开始。

第二个数字可以是任何数字。目前没有有效的数字以0406 开头,但没有什么可以阻止这些范围在未来的使用。 (03最近投入使用)

它们可以用一组括号和空格(一个或多个,在不同的位置)进行格式化,但这些都是完全可选的。

因此,英国电话号码的基本工作表达式可能如下所示:

/^\(?0( *\d\)?)9,10$/

这将检查 10 位或 11 位数字,从零开始,任何数字之间的格式空格,以及可选的区号括号。

(是的,这将允许不匹配的括号,因为我没有检查是否只有一个右括号。强制执行此操作会使表达式更加复杂,我现在没有时间,但如果您愿意,请随时添加)

顺便说一句,如果您想进行额外的过滤,您可能还需要注意以下规则:

0809070 开头的号码是特价号码,通常不会作为私人号码提供,因此在验证私人号码时可以排除。

李>

07 号码是可移动的(070 除外;见上文),因此如果您专门验证固定电话号码,则可以将其排除在外。

【讨论】:

我想添加一条评论(尤其是现在在 2016 年),从地址簿等自动填充将使用国际拨号代码 44 或 +44 替换前导 0 填充电话号码。我的regex-foo 不够强大,无法修改你的正则表达式来解决这个问题。 国家有效号码 (NSN) 可以是 10、9 或 7 位数字(完整的数字长度为 11、10 或 8 位数字)en.wikipedia.org/wiki/…

以上是关于验证英国电话号码[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

英国商家的信用卡验证资源

快速从用户电话号码中获取电话国家代码

Firebase 数据库并检查电话联系人 ios

AS3格式化英国移动电话号码(XXXXXXXXXX)

使用提供程序在 Flutter 中进行 Firebase 电话身份验证 [关闭]

手机号码的正则表达式,带有某些条件的电话号码验证