2010-08-12 95 views
3

我想驗證英國郵政編碼的字段。什麼正則表達式可以用來驗證這個領域? (([A-Z]{1,2}[0-9][0-9A-Z]{0,1})\ ([0-9][A-Z]{2}))|(GIR\ 0AA)$似乎確實有效,因爲它有例外GIR 0AA使用正則表達式驗證英國郵政編碼

所以,請幫我寫一個表達式沒有任何異常

+0

您的意思是**郵政編碼**? – Rob 2010-08-12 05:52:26

+0

這突然變得更有意義,如果它。帶有字母的PIN似乎不太可能(至少如果他們沒有任何進一步的信息)。 – Quentin 2010-08-12 05:59:50

+0

儘管...嘗試驗證郵政編碼沒有意義,因爲郵政編碼系統對其中的普通規則有例外。 – Quentin 2010-08-12 06:01:25

回答

0
^([A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]? {1,2}[0-9][ABD-HJLN-UW-Z]{2}|GIR 0AA)$ 
3

如果你的意思郵編,wikipedia has a section on validation。它推薦的一個正則表達式是:

((A[BL]|B[ABDHLNRST]?|C[ABFHMORTVW]|D[ADEGHLNTY]|E[HNX]?|F[KY]|G[LUY]?|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]?|M[EKL]?|N[EGNPRW]?|O[LX]|P[AEHLOR]|R[GHM]|S[AEGKLMNOPRSTY]?|T[ADFNQRSW]|UB|W[ADFNRSV]|YO|ZE)[1-9]?[0-9]|([E|N|NW|SE|SW|W]1|EC[1-4]|WC[12])[A-HJKMNPR-Y]|[SW|W]([1-9][0-9]|[2-9])|EC[1-9][0-9]) [0-9][ABD-HJLNP-UW-Z]{2} 

這個優點是它捕獲了一些無效的區域和區域。

1

旁註:GIR 0AA被列爲例外,對自己的日常 表達,因爲它是一個有效的英國 post code的是什麼esentially 歷史原因(搜索它在 維基百科的文章,它給 特別提到)。

沒有平凡的正則表達式,你可以寫驗證一個英國郵政編碼,因爲沒有擔保,例如,GU78 2AB有效(GU78向外區域可能只包含2A 一個,但不2A B),而GU77 2AB可能被認爲是有效的。

您可以使用正則表達式來驗證表格和結構的一段文字,以確定它是否符合要求被視爲郵政編碼的要求。廣義上講,我認爲以下正則表達式可以滿足以下要求:

(([A-Z]{1,2}[0-9]{1,2})\ ([0-9][A-Z]{2}))|(GIR\ 0AA)$ 
+0

謝謝你的迴應,這真的幫了我很多,我認爲這是個例外,現在我明白了 – 2010-08-16 05:13:44

相關問題