6

正規表現を使用してC#で英国の電話番号を検証するにはどうすればよいですか?

4

1 に答える 1

30

受け入れられた回答の正規表現は、制限が厳しすぎるため、すべての有効なUK番号と一致しません(その間に、無効と見なされる0203などの追加の番号範囲が開かれました)。

英国の電話番号は、かなり単純な規則に従います。

  • それらは10桁または11桁の長さにすることができます(いくつかの特別な数字を除いて、しかしそれらを検証する必要はほとんどありません)

  • これらは、市外局番とそれに続く市内番号で構成されます。市外局番の長さは3桁から5桁の間で変化し、番号のローカル部分は10桁または11桁の残りの長さを占めます。すべての実用的な目的で、番号のローカル部分だけを引用する人はいないため、フォーマットにどのように影響するかを除いて、この区別は無視してかまいません。

  • それらはゼロから始まります。

  • 2桁目は何でもかまいません。04現在、またはで始まる有効な数値は06ありませんが、将来これらの範囲が使用されるのを止めるものは何もありません。(03最近使用されました)

  • これらは、角かっことスペース(1つ以上、さまざまな位置)でフォーマットできますが、これらはすべて完全にオプションです。

したがって、英国の電話番号の基本的な作業式は次のようになります。

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

これにより、ゼロから始まり、任意の桁の間にフォーマットスペースがあり、オプションで市外局番の角かっこで囲まれた10桁または11桁の数字がチェックされます。

(もちろん、閉じ角かっこが1つしかないことを確認していないため、角かっこが一致しない可能性があります。これを強制すると、式が非常に複雑になり、今は時間がありませんが、必要に応じてこれを自由に追加してください)

ちなみに、追加のフィルタリングを行う場合は、次のルールにも注意する必要があります。

  • から始まる番号は特別価格の番号0809あり070、通常はプライベート番号として指定されないため、プライベート番号を検証する場合は除外できます。

  • 07番号は移動070可能であるため(上​​記を参照)、固定電話を明確に検証している場合は除外できます。

于 2011-10-11T15:04:25.707 に答える