2008-08-28 261 views

回答

28

已接受答案中的正則表達式與所有有效的英國數字都不匹配,因爲它的限制太多(同時打開了其他數字範圍,例如0203,它被視爲無效)。

英國電話號碼遵循相當簡單的規則:

  • 它們可以是10個或11位數字(一些特殊號碼的例外,但你不可能需要驗證的)

  • 它們由一個區號後跟一個本地號碼組成。地區代碼的長度在三到五位數字之間變化,數字的本地部分佔用10或11位數字的剩餘長度。出於所有實際目的,沒有人會引用他們的本地部分號碼,因此您可以忽略現在的區別,除了它如何影響格式。

  • 它們從零開始。

  • 第二個數字可以是任何東西。目前沒有有效的數字從0406開始,但是沒有什麼能阻止這些範圍在將來被使用。 (03最近已投入使用)

  • 它們可以用一組括號和空格(一個或多個,位置不同)格式化,但這些都是完全可選的。

因此,英國的電話號碼,一個基本的工作表現看起來是這樣的:

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

這將檢查10個或11位數字,從零,與任何與格式空間數字以及區域代碼的一組括號。

(是的,這將允許不匹配的括號,因爲我沒有檢查只有一個右括號,強制執行這將使表達式變得更加複雜,而且我沒有時間去處理這個權利現在,反而覺得免費的,如果你想添加這個)

順便說一句,如果你想要做額外的過濾,你可能想也應注意以下原則:

  • 號開始0809070是特殊價格數字,通常不會以私人數字的形式給出,所以如果驗證私人號碼可以被排除。

  • 07號碼是移動號碼(除了070;請參閱上面的內容),因此如果您正在驗證固定電話,可以排除此號碼。

+0

到這個答案的頂部! – 2011-12-12 13:18:48