正規表現を使用してC#で英国の電話番号を検証するにはどうすればよいですか?
1 に答える
受け入れられた回答の正規表現は、制限が厳しすぎるため、すべての有効なUK番号と一致しません(その間に、無効と見なされる0203などの追加の番号範囲が開かれました)。
英国の電話番号は、かなり単純な規則に従います。
それらは10桁または11桁の長さにすることができます(いくつかの特別な数字を除いて、しかしそれらを検証する必要はほとんどありません)
これらは、市外局番とそれに続く市内番号で構成されます。市外局番の長さは3桁から5桁の間で変化し、番号のローカル部分は10桁または11桁の残りの長さを占めます。すべての実用的な目的で、番号のローカル部分だけを引用する人はいないため、フォーマットにどのように影響するかを除いて、この区別は無視してかまいません。
それらはゼロから始まります。
2桁目は何でもかまいません。
04
現在、またはで始まる有効な数値は06
ありませんが、将来これらの範囲が使用されるのを止めるものは何もありません。(03
最近使用されました)これらは、角かっことスペース(1つ以上、さまざまな位置)でフォーマットできますが、これらはすべて完全にオプションです。
したがって、英国の電話番号の基本的な作業式は次のようになります。
/^\(?0( *\d\)?){9,10}$/
これにより、ゼロから始まり、任意の桁の間にフォーマットスペースがあり、オプションで市外局番の角かっこで囲まれた10桁または11桁の数字がチェックされます。
(もちろん、閉じ角かっこが1つしかないことを確認していないため、角かっこが一致しない可能性があります。これを強制すると、式が非常に複雑になり、今は時間がありませんが、必要に応じてこれを自由に追加してください)
ちなみに、追加のフィルタリングを行う場合は、次のルールにも注意する必要があります。
から始まる番号は特別価格の番号
08
で09
あり070
、通常はプライベート番号として指定されないため、プライベート番号を検証する場合は除外できます。07
番号は移動070
可能であるため(上記を参照)、固定電話を明確に検証している場合は除外できます。