2009-02-23 22 views
159

我正在尋找最終的郵政編碼和郵政編碼正則表達式。我正在尋找能涵蓋世界上大部分(希望全部)的東西。什麼是最終的郵政編碼和zip正則表達式?

+0

它必須是一個正則表達式嗎? – 2009-02-23 17:02:42

+3

所有郵政編碼的單一正則表達式在大多數情況下都是無用的,更不用說需要大量的unicode編碼了。更好的辦法是按國家來檢查正則表達式,這樣就不會驗證「紐約,紐約AF23Q」這樣的東西是正確的。 – 2009-02-23 17:05:26

+0

我不再需要它了,所以我失去了鏈接的鏈接,但曾經有一個網站(由一個私人維護)有大量關於各國規則的信息,與他們的郵政服務的鏈接網站等。我會盡力挖掘它。然而,之後,你將不得不在國家的基礎上進行,因爲變化太多了。 – Adrien 2009-05-11 20:51:58

回答

102

沒有。

世界各地的郵政編碼不遵循常見模式。在一些國家,它們是由用數字,在其他人,他們可以是字母數字的組合,有些可以包含空格,其他點,字符的數量可以從兩個到至少六個變化......

你什麼可以做(理論上)是爲世界上每個國家創建一個單獨的正則表達式,不推薦IMO。但是驗證部分仍然會丟失:郵編12345可能存在,但不是12346,也許12344也不存在。你如何檢查與正則表達式?

你不能。

+78

12345確實存在。紐約施奈克塔迪。 (不,我不住在那裏,但很多網站認爲我這樣做......) – 2009-02-23 17:13:52

+0

我懷疑可以編譯正則表達式,但是像這樣的任務更適合於數據庫。正則表達式看起來像10000 | 10001 | 10002 | 10003 | ....... – Kibbee 2009-02-23 17:17:38

13

This looks like a good reference雖然它不是在正則表達式。

真的,除非你真的航運東西給你的用戶,我不認爲這是值得的努力。如果你運送它,有地址清潔工具/服務,你可以看看,讓自己更容易。

+0

此外,即使它今天是正確的郵政編碼,未來也可能會發生變化。美國郵政總是不斷增加新的和分裂的領域。您可以跟上的唯一方法是在您實際運送物品時進行驗證。由於各種原因,一些城鎮甚至選擇更改自己的郵政編碼。 – NotMe 2010-02-05 21:17:47

1

既然有這麼多的優勢情況下,每個國家,我不認爲有比其他可能的最終正則表達式(如倫敦地址可以使用一個稍微不同的格式,以英國的其餘部分。):

[0-9a-zA-Z]+ 

最好採用相當寬泛的模式(不像上面那麼廣泛),或者用自己的特定模式來對待每個國家/地區!

更新:然而,它可能是動態構建一個正則表達式基於大量更小的區域特定規則 - 雖然不確定性能!

很多國家的具體模式可以在RegExLib網站上找到。

+0

可能想要在角色類別周圍放置一組括號... – 2009-02-23 17:42:33

+0

好點 - 歡呼聲! – BigJump 2009-02-23 19:54:54

7

根據您的應用程序,你可能要實施的大多數訪問者的來源國正則表達式匹配和休息(接受任何)沒有驗證。

1

你爲什麼要這樣做,你爲什麼在意?正如Tom Ritter所指出的那樣,無論您是否擁有ZIP /郵政編碼,都無關緊要,更不用說它是否有效,除非您實際上將要向該地址發送郵件。即使你希望你將派出他們的東西一天,這並不意味着你需要一個郵政編碼今天

+0

是的,但是如果他們要進入一個,不妨確定它在那個時候是正確的。然而,我同意基本上說的其他答案之一,併爲您認爲將成爲您的大部分客戶的國家進行驗證。 – cdmckay 2009-02-23 19:12:22

1

正如其他地方所指出的,世界各地的變化是巨大的。即使與模式相匹配的東西並不意味着它存在。

然後,當然,也有很多地方郵政編碼不使用(如多或愛爾蘭)。

+0

事實上,可能所有的愛爾蘭,因爲我不認爲D1,D2等被認爲是適當的郵政編碼,因爲你不能使用這個代碼和街道號碼識別地址。 – 2009-05-11 20:44:06

6

我們使用以下命令:

加拿大

([A-Z]{1}[0-9]{1}){3} //We raise to upper first 

美國

[0-9]{5}    //-or- 
[0-9]{5}-[0-9]{4}  //10 digit zip 

其他

接受的是

+1

我建議在美國添加一個可選 - [0-9] {4}。有些人確實使用ZIP + 4。 – 2009-02-23 20:01:45

+4

/[0-9] {5}(?: - [0-9] {4})?/允許您同時驗證美國的兩種樣式。 – 2009-05-11 20:51:30

15

試圖用一個正則表達式來覆蓋整個世界並不完全可能的,當然不建議不可行或。

不要自吹自擂,但我寫了一些非常徹底的正則表達式,您可能會發現有幫助。

  • Canadian postal codes

    Basic validation: 
    ^[ABCEGHJ-NPRSTVXY]{1}[0-9]{1}[ABCEGHJ-NPRSTV-Z]{1}[ ]?[0-9]{1}[ABCEGHJ-NPRSTV-Z]{1}[0-9]{1}$ 
    
    Extended validation: 
    ^(A(0[ABCEGHJ-NPR]|1[ABCEGHK-NSV-Y]|2[ABHNV]|5[A]|8[A])|B(0[CEHJ-NPRSTVW]|1[ABCEGHJ-NPRSTV-Y]|2[ABCEGHJNRSTV-Z]|3[ABEGHJ-NPRSTVZ]|4[ABCEGHNPRV]|5[A]|6[L]|9[A])|C(0[AB]|1[ABCEN])|E(1[ABCEGHJNVWX]|2[AEGHJ-NPRSV]|3[ABCELNVYZ]|4[ABCEGHJ-NPRSTV-Z]|5[ABCEGHJ-NPRSTV]|6[ABCEGHJKL]|7[ABCEGHJ-NP]|8[ABCEGJ-NPRST]|9[ABCEGH])|G(0[ACEGHJ-NPRSTV-Z]|1[ABCEGHJ-NPRSTV-Y]|2[ABCEGJ-N]|3[ABCEGHJ-NZ]|4[ARSTVWXZ]|5[ABCHJLMNRTVXYZ]|6[ABCEGHJKLPRSTVWXZ]|7[ABGHJKNPSTXYZ]|8[ABCEGHJ-NPTVWYZ]|9[ABCHNPRTX])|H(0[HM]|1[ABCEGHJ-NPRSTV-Z]|2[ABCEGHJ-NPRSTV-Z]|3[ABCEGHJ-NPRSTV-Z]|4[ABCEGHJ-NPRSTV-Z]|5[AB]|7[ABCEGHJ-NPRSTV-Y]|8[NPRSTYZ]|9[ABCEGHJKPRSWX])|J(0[ABCEGHJ-NPRSTV-Z]|1[ACEGHJ-NRSTXZ]|2[ABCEGHJ-NRSTWXY]|3[ABEGHLMNPRTVXYZ]|4[BGHJ-NPRSTV-Z]|5[ABCJ-MRTV-Z]|6[AEJKNRSTVWYXZ]|7[ABCEGHJ-NPRTV-Z]|8[ABCEGHLMNPRTVXYZ]|9[ABEHJLNTVXYZ])|K(0[ABCEGHJ-M]|1[ABCEGHJ-NPRSTV-Z]|2[ABCEGHJ-MPRSTVW]|4[ABCKMPR]|6[AHJKTV]|7[ACGHK-NPRSV]|8[ABHNPRV]|9[AHJKLV])|L(0[[ABCEGHJ-NPRS]]|1[ABCEGHJ-NPRSTV-Z]|2[AEGHJMNPRSTVW]|3[BCKMPRSTVXYZ]|4[ABCEGHJ-NPRSTV-Z]|5[ABCEGHJ-NPRSTVW]|6[ABCEGHJ-MPRSTV-Z]|7[ABCEGJ-NPRST]|8[EGHJ-NPRSTVW]|9[ABCGHK-NPRSTVWYZ])|M(1[BCEGHJ-NPRSTVWX]|2[HJ-NPR]|3[ABCHJ-N]|4[ABCEGHJ-NPRSTV-Y]|5[ABCEGHJ-NPRSTVWX]|6[ABCEGHJ-NPRS]|7[AY]|8[V-Z]|9[ABCLMNPRVW])|N(0[ABCEGHJ-NPR]|1[ACEGHKLMPRST]|2[ABCEGHJ-NPRTVZ]|3[ABCEHLPRSTVWY]|4[BGKLNSTVWXZ]|5[ACHLPRV-Z]|6[ABCEGHJ-NP]|7[AGLMSTVWX]|8[AHMNPRSTV-Y]|9[ABCEGHJKVY])|P(0[ABCEGHJ-NPRSTV-Y]|1[ABCHLP]|2[ABN]|3[ABCEGLNPY]|4[NPR]|5[AEN]|6[ABC]|7[ABCEGJKL]|8[NT]|9[AN])|R(0[ABCEGHJ-M]|1[ABN]|2[CEGHJ-NPRV-Y]|3[ABCEGHJ-NPRSTV-Y]|4[AHJKL]|5[AGH]|6[MW]|7[ABCN]|8[AN]|9[A])|S(0[ACEGHJ-NP]|2[V]|3[N]|4[AHLNPRSTV-Z]|6[HJKVWX]|7[HJ-NPRSTVW]|9[AHVX])|T(0[ABCEGHJ-MPV]|1[ABCGHJ-MPRSV-Y]|2[ABCEGHJ-NPRSTV-Z]|3[ABCEGHJ-NPRZ]|4[ABCEGHJLNPRSTVX]|5[ABCEGHJ-NPRSTV-Z]|6[ABCEGHJ-NPRSTVWX]|7[AENPSVXYZ]|8[ABCEGHLNRSVWX]|9[ACEGHJKMNSVWX])|V(0[ABCEGHJ-NPRSTVWX]|1[ABCEGHJ-NPRSTV-Z]|2[ABCEGHJ-NPRSTV-Z]|3[ABCEGHJ-NRSTV-Y]|4[ABCEGK-NPRSTVWXZ]|5[ABCEGHJ-NPRSTV-Z]|6[ABCEGHJ-NPRSTV-Z]|7[ABCEGHJ-NPRSTV-Y]|8[ABCGJ-NPRSTV-Z]|9[ABCEGHJ-NPRSTV-Z])|X(0[ABCGX]|1[A])|Y(0[AB]|1[A]))[ ]?[0-9]{1}[ABCEGHJ-NPRSTV-Z]{1}[0-9]{1}$ 
    
  • US ZIP codes

    ^[0-9]{5}(-[0-9]{4})?$ 
    
  • UK post codes

    ^([A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])\ [0-9][ABD-HJLNP-UW-Z]{2}|(GIR\ 0AA)|(SAN\ TA1)|(BFPO\ (C\/O\)?[0-9]{1,4})|((ASCN|BBND|[BFS]IQQ|PCRN|STHL|TDCU|TKCA)\ 1ZZ))$ 
    

如果不實際將郵件郵寄到某個地址並讓他人在收到郵件時告訴他們,但無法確保準確性,但我們可以通過消除我們知道的不好的情況來縮小範圍。

2

問題在於,您可能沒有很好的方法來跟上世界各地不同國家不斷變化的郵政編碼要求,而且您沒有共同的語言。除非你有足夠的預算來跟蹤這一點,否則你幾乎肯定會把驗證地址的責任交給谷歌或雅虎。

兩家公司均通過可編程API提供地址查找功能。

1

有一個準確的郵政編碼超出航運的原因。旅行社進行跨境旅遊(歐元區當然除外)需要提前提供這些信息給當局。通常這些信息是由可能或可能不熟悉這種事情的代理人輸入的。任何可以減少錯誤的方法是一個好主意™

但是,編寫一個覆蓋世界上所有郵政編碼的正則表達式將是瘋狂的。

+1

只有在代碼開始拒絕有效的zip代碼時,它纔是一個好主意,因爲它有問題或郵政編碼已更改。驗證是必須要麼是正確的,要麼根本不存在。至少應該有一個覆蓋選項。 – 2009-05-11 20:49:22

178

unicode CLDR包含每個國家的郵政編碼正則表達式。 (158分正則表達式的總!)

谷歌也有按國家的地址格式信息,包括郵政編碼,這裏Web服務 - http://i18napis.appspot.com/address (我發現通過http://unicode.org/review/pri180/該鏈接)

編輯

這裏postalCodeData.xml正則表達式的副本:

"GB", "GIR[ ]?0AA|((AB|AL|B|BA|BB|BD|BH|BL|BN|BR|BS|BT|CA|CB|CF|CH|CM|CO|CR|CT|CV|CW|DA|DD|DE|DG|DH|DL|DN|DT|DY|E|EC|EH|EN|EX|FK|FY|G|GL|GY|GU|HA|HD|HG|HP|HR|HS|HU|HX|IG|IM|IP|IV|JE|KA|KT|KW|KY|L|LA|LD|LE|LL|LN|LS|LU|M|ME|MK|ML|N|NE|NG|NN|NP|NR|NW|OL|OX|PA|PE|PH|PL|PO|PR|RG|RH|RM|S|SA|SE|SG|SK|SL|SM|SN|SO|SP|SR|SS|ST|SW|SY|TA|TD|TF|TN|TQ|TR|TS|TW|UB|W|WA|WC|WD|WF|WN|WR|WS|WV|YO|ZE)(\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}))|BFPO[ ]?\d{1,4}" 
"JE", "JE\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}" 
"GG", "GY\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}" 
"IM", "IM\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}" 
"US", "\d{5}([ \-]\d{4})?" 
"CA", "[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][ ]?\d[ABCEGHJ-NPRSTV-Z]\d" 
"DE", "\d{5}" 
"JP", "\d{3}-\d{4}" 
"FR", "\d{2}[ ]?\d{3}" 
"AU", "\d{4}" 
"IT", "\d{5}" 
"CH", "\d{4}" 
"AT", "\d{4}" 
"ES", "\d{5}" 
"NL", "\d{4}[ ]?[A-Z]{2}" 
"BE", "\d{4}" 
"DK", "\d{4}" 
"SE", "\d{3}[ ]?\d{2}" 
"NO", "\d{4}" 
"BR", "\d{5}[\-]?\d{3}" 
"PT", "\d{4}([\-]\d{3})?" 
"FI", "\d{5}" 
"AX", "22\d{3}" 
"KR", "\d{3}[\-]\d{3}" 
"CN", "\d{6}" 
"TW", "\d{3}(\d{2})?" 
"SG", "\d{6}" 
"DZ", "\d{5}" 
"AD", "AD\d{3}" 
"AR", "([A-HJ-NP-Z])?\d{4}([A-Z]{3})?" 
"AM", "(37)?\d{4}" 
"AZ", "\d{4}" 
"BH", "((1[0-2]|[2-9])\d{2})?" 
"BD", "\d{4}" 
"BB", "(BB\d{5})?" 
"BY", "\d{6}" 
"BM", "[A-Z]{2}[ ]?[A-Z0-9]{2}" 
"BA", "\d{5}" 
"IO", "BBND 1ZZ" 
"BN", "[A-Z]{2}[ ]?\d{4}" 
"BG", "\d{4}" 
"KH", "\d{5}" 
"CV", "\d{4}" 
"CL", "\d{7}" 
"CR", "\d{4,5}|\d{3}-\d{4}" 
"HR", "\d{5}" 
"CY", "\d{4}" 
"CZ", "\d{3}[ ]?\d{2}" 
"DO", "\d{5}" 
"EC", "([A-Z]\d{4}[A-Z]|(?:[A-Z]{2})?\d{6})?" 
"EG", "\d{5}" 
"EE", "\d{5}" 
"FO", "\d{3}" 
"GE", "\d{4}" 
"GR", "\d{3}[ ]?\d{2}" 
"GL", "39\d{2}" 
"GT", "\d{5}" 
"HT", "\d{4}" 
"HN", "(?:\d{5})?" 
"HU", "\d{4}" 
"IS", "\d{3}" 
"IN", "\d{6}" 
"ID", "\d{5}" 
"IL", "\d{5}" 
"JO", "\d{5}" 
"KZ", "\d{6}" 
"KE", "\d{5}" 
"KW", "\d{5}" 
"LA", "\d{5}" 
"LV", "\d{4}" 
"LB", "(\d{4}([ ]?\d{4})?)?" 
"LI", "(948[5-9])|(949[0-7])" 
"LT", "\d{5}" 
"LU", "\d{4}" 
"MK", "\d{4}" 
"MY", "\d{5}" 
"MV", "\d{5}" 
"MT", "[A-Z]{3}[ ]?\d{2,4}" 
"MU", "(\d{3}[A-Z]{2}\d{3})?" 
"MX", "\d{5}" 
"MD", "\d{4}" 
"MC", "980\d{2}" 
"MA", "\d{5}" 
"NP", "\d{5}" 
"NZ", "\d{4}" 
"NI", "((\d{4}-)?\d{3}-\d{3}(-\d{1})?)?" 
"NG", "(\d{6})?" 
"OM", "(PC)?\d{3}" 
"PK", "\d{5}" 
"PY", "\d{4}" 
"PH", "\d{4}" 
"PL", "\d{2}-\d{3}" 
"PR", "00[679]\d{2}([ \-]\d{4})?" 
"RO", "\d{6}" 
"RU", "\d{6}" 
"SM", "4789\d" 
"SA", "\d{5}" 
"SN", "\d{5}" 
"SK", "\d{3}[ ]?\d{2}" 
"SI", "\d{4}" 
"ZA", "\d{4}" 
"LK", "\d{5}" 
"TJ", "\d{6}" 
"TH", "\d{5}" 
"TN", "\d{4}" 
"TR", "\d{5}" 
"TM", "\d{6}" 
"UA", "\d{5}" 
"UY", "\d{5}" 
"UZ", "\d{6}" 
"VA", "00120" 
"VE", "\d{4}" 
"ZM", "\d{5}" 
"AS", "96799" 
"CC", "6799" 
"CK", "\d{4}" 
"RS", "\d{6}" 
"ME", "8\d{4}" 
"CS", "\d{5}" 
"YU", "\d{5}" 
"CX", "6798" 
"ET", "\d{4}" 
"FK", "FIQQ 1ZZ" 
"NF", "2899" 
"FM", "(9694[1-4])([ \-]\d{4})?" 
"GF", "9[78]3\d{2}" 
"GN", "\d{3}" 
"GP", "9[78][01]\d{2}" 
"GS", "SIQQ 1ZZ" 
"GU", "969[123]\d([ \-]\d{4})?" 
"GW", "\d{4}" 
"HM", "\d{4}" 
"IQ", "\d{5}" 
"KG", "\d{6}" 
"LR", "\d{4}" 
"LS", "\d{3}" 
"MG", "\d{3}" 
"MH", "969[67]\d([ \-]\d{4})?" 
"MN", "\d{6}" 
"MP", "9695[012]([ \-]\d{4})?" 
"MQ", "9[78]2\d{2}" 
"NC", "988\d{2}" 
"NE", "\d{4}" 
"VI", "008(([0-4]\d)|(5[01]))([ \-]\d{4})?" 
"PF", "987\d{2}" 
"PG", "\d{3}" 
"PM", "9[78]5\d{2}" 
"PN", "PCRN 1ZZ" 
"PW", "96940" 
"RE", "9[78]4\d{2}" 
"SH", "(ASCN|STHL) 1ZZ" 
"SJ", "\d{4}" 
"SO", "\d{5}" 
"SZ", "[HLMS]\d{3}" 
"TC", "TKCA 1ZZ" 
"WF", "986\d{2}" 
"XK", "\d{5}" 
"YT", "976\d{2}" 
83

使用這些至REGx

$ZIPREG=array(
    "US"=>"^\d{5}([\-]?\d{4})?$", 
    "UK"=>"^(GIR|[A-Z]\d[A-Z\d]??|[A-Z]{2}\d[A-Z\d]??)[ ]??(\d[A-Z]{2})$", 
    "DE"=>"\b((?:0[1-46-9]\d{3})|(?:[1-357-9]\d{4})|(?:[4][0-24-9]\d{3})|(?:[6][013-9]\d{3}))\b", 
    "CA"=>"^([ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ])\ {0,1}(\d[ABCEGHJKLMNPRSTVWXYZ]\d)$", 
    "FR"=>"^(F-)?((2[A|B])|[0-9]{2})[0-9]{3}$", 
    "IT"=>"^(V-|I-)?[0-9]{5}$", 
    "AU"=>"^(0[289][0-9]{2})|([1345689][0-9]{3})|(2[0-8][0-9]{2})|(290[0-9])|(291[0-4])|(7[0-4][0-9]{2})|(7[8-9][0-9]{2})$", 
    "NL"=>"^[1-9][0-9]{3}\s?([a-zA-Z]{2})?$", 
    "ES"=>"^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$", 
    "DK"=>"^([D|d][K|k](|-))?[1-9]{1}[0-9]{3}$", 
    "SE"=>"^(s-|S-){0,1}[0-9]{3}\s?[0-9]{2}$", 
    "BE"=>"^[1-9]{1}[0-9]{3}$", 
    "IN"=>"^\d{6}$" 
); 
1

有人問有關格式的郵件地址列表,我想這就是他一直在尋找...

弗蘭克的強迫性指南郵寄地址:http://www.columbia.edu/~fdc/postal/ 但是,對於街道問題無濟於事。

我的工作使用一些工具來輔助這個: - 律商聯訊服務,包括NCOA查找(你會得到地址標準化「免費」) - 「梅麗莎數據」 http://www.melissadata.com

5
.* 

大跳轉忘了換行符,空格和控制字符。

國際郵政編碼是一種暫停問題。

1

這是一個非常簡單的RegEx驗證美國郵政編碼(而不是ZipCode加四)。

(?!([089])\ 1 {4})\ d {5}

似乎所有五個位數字相同,除了 '00000', '88888' & '99999' 有效郵編。

我已經測試這個表達式與http://regexpal.com/

SP

12
  1. 每個郵政編碼系統僅使用AZ和/或0-9,有時空間/破折號

  2. 並非所有國家都使用郵政編碼(愛爾蘭境外的愛爾蘭),但我們會在此忽略。

  3. 最短的郵政編碼格式是塞拉利昂與NN

  4. 最長的是美國薩摩亞NNNNN-NNNNNN

  5. 您應該允許一個空間或破折號。

  6. 不應該開始或空間或破折號結束

這應包括以上:

(?i)^[a-z0-9][a-z0-9\- ]{0,10}[a-z0-9]$ 
3

請注意,這是一個相當困難的問題,如接受的答案說。 雖然我想它並沒有阻止geonames.org的人。 他們有一個文件country info file,它不適合整個答案 - 顯然是限制在30000字符。有大約150個國家的正則表達式。

我提取相關這裏這個問題位:

AD ^(?:AD)*(\d{3})$ 
AM ^(\d{6})$ 
AR ^([A-Z]\d{4}[A-Z]{3})$ 
AT ^(\d{4})$ 
AU ^(\d{4})$ 
AX ^(?:FI)*(\d{5})$ 
AZ ^(?:AZ)*(\d{4})$ 
BA ^(\d{5})$ 
BB ^(?:BB)*(\d{5})$ 
BD ^(\d{4})$ 
BE ^(\d{4})$ 
BG ^(\d{4})$ 
BH ^(\d{3}\d?)$ 
BM ^([A-Z]{2}\d{2})$ 
BN ^([A-Z]{2}\d{4})$ 
BR ^(\d{8})$ 
BY ^(\d{6})$ 
CA ^([ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ]) ?(\d[ABCEGHJKLMNPRSTVWXYZ]\d)$ 
CH ^(\d{4})$ 
CL ^(\d{7})$ 
CN ^(\d{6})$ 
CR ^(\d{4})$ 
CU ^(?:CP)*(\d{5})$ 
CV ^(\d{4})$ 
CX ^(\d{4})$ 
CY ^(\d{4})$ 
CZ ^(\d{5})$ 
DE ^(\d{5})$ 
DK ^(\d{4})$ 
DO ^(\d{5})$ 
DZ ^(\d{5})$ 
EC ^([a-zA-Z]\d{4}[a-zA-Z])$ 
EE ^(\d{5})$ 
EG ^(\d{5})$ 
ES ^(\d{5})$ 
ET ^(\d{4})$ 
FI ^(?:FI)*(\d{5})$ 
FM ^(\d{5})$ 
FO ^(?:FO)*(\d{3})$ 
FR ^(\d{5})$ 
GB ^(([A-Z]\d{2}[A-Z]{2})|([A-Z]\d{3}[A-Z]{2})|([A-Z]{2}\d{2}[A-Z]{2})|([A-Z]{2}\d{3}[A-Z]{2})|([A-Z]\d[A-Z]\d[A-Z]{2})|([A-Z]{2}\d[A-Z]\d[A-Z]{2})|(GIR0AA))$ 
GE ^(\d{4})$ 
GF ^((97|98)3\d{2})$ 
GG ^(([A-Z]\d{2}[A-Z]{2})|([A-Z]\d{3}[A-Z]{2})|([A-Z]{2}\d{2}[A-Z]{2})|([A-Z]{2}\d{3}[A-Z]{2})|([A-Z]\d[A-Z]\d[A-Z]{2})|([A-Z]{2}\d[A-Z]\d[A-Z]{2})|(GIR0AA))$ 
GL ^(\d{4})$ 
GP ^((97|98)\d{3})$ 
GR ^(\d{5})$ 
GT ^(\d{5})$ 
GU ^(969\d{2})$ 
GW ^(\d{4})$ 
HN ^([A-Z]{2}\d{4})$ 
HR ^(?:HR)*(\d{5})$ 
HT ^(?:HT)*(\d{4})$ 
HU ^(\d{4})$ 
ID ^(\d{5})$ 
IL ^(\d{5})$ 
IM ^(([A-Z]\d{2}[A-Z]{2})|([A-Z]\d{3}[A-Z]{2})|([A-Z]{2}\d{2}[A-Z]{2})|([A-Z]{2}\d{3}[A-Z]{2})|([A-Z]\d[A-Z]\d[A-Z]{2})|([A-Z]{2}\d[A-Z]\d[A-Z]{2})|(GIR0AA))$ 
IN ^(\d{6})$ 
IQ ^(\d{5})$ 
IR ^(\d{10})$ 
IS ^(\d{3})$ 
IT ^(\d{5})$ 
JE ^(([A-Z]\d{2}[A-Z]{2})|([A-Z]\d{3}[A-Z]{2})|([A-Z]{2}\d{2}[A-Z]{2})|([A-Z]{2}\d{3}[A-Z]{2})|([A-Z]\d[A-Z]\d[A-Z]{2})|([A-Z]{2}\d[A-Z]\d[A-Z]{2})|(GIR0AA))$ 
JO ^(\d{5})$ 
JP ^(\d{7})$ 
KE ^(\d{5})$ 
KG ^(\d{6})$ 
KH ^(\d{5})$ 
KP ^(\d{6})$ 
KR ^(?:SEOUL)*(\d{6})$ 
KW ^(\d{5})$ 
KZ ^(\d{6})$ 
LA ^(\d{5})$ 
LB ^(\d{4}(\d{4})?)$ 
LI ^(\d{4})$ 
LK ^(\d{5})$ 
LR ^(\d{4})$ 
LS ^(\d{3})$ 
LT ^(?:LT)*(\d{5})$ 
LU ^(\d{4})$ 
LV ^(?:LV)*(\d{4})$ 
MA ^(\d{5})$ 
MC ^(\d{5})$ 
MD ^(?:MD)*(\d{4})$ 
ME ^(\d{5})$ 
MG ^(\d{3})$ 
MK ^(\d{4})$ 
MM ^(\d{5})$ 
MN ^(\d{6})$ 
MQ ^(\d{5})$ 
MT ^([A-Z]{3}\d{2}\d?)$ 
MV ^(\d{5})$ 
MX ^(\d{5})$ 
MY ^(\d{5})$ 
MZ ^(\d{4})$ 
NC ^(\d{5})$ 
NE ^(\d{4})$ 
NF ^(\d{4})$ 
NG ^(\d{6})$ 
NI ^(\d{7})$ 
NL ^(\d{4}[A-Z]{2})$ 
NO ^(\d{4})$ 
NP ^(\d{5})$ 
NZ ^(\d{4})$ 
OM ^(\d{3})$ 
PF ^((97|98)7\d{2})$ 
PG ^(\d{3})$ 
PH ^(\d{4})$ 
PK ^(\d{5})$ 
PL ^(\d{5})$ 
PM ^(97500)$ 
PR ^(\d{9})$ 
PT ^(\d{7})$ 
PW ^(96940)$ 
PY ^(\d{4})$ 
RE ^((97|98)(4|7|8)\d{2})$ 
RO ^(\d{6})$ 
RS ^(\d{6})$ 
RU ^(\d{6})$ 
SA ^(\d{5})$ 
SD ^(\d{5})$ 
SE ^(?:SE)*(\d{5})$ 
SG ^(\d{6})$ 
SH ^(STHL1ZZ)$ 
SI ^(?:SI)*(\d{4})$ 
SK ^(\d{5})$ 
SM ^(4789\d)$ 
SN ^(\d{5})$ 
SO ^([A-Z]{2}\d{5})$ 
SV ^(?:CP)*(\d{4})$ 
SZ ^([A-Z]\d{3})$ 
TC ^(TKCA 1ZZ)$ 
TH ^(\d{5})$ 
TJ ^(\d{6})$ 
TM ^(\d{6})$ 
TN ^(\d{4})$ 
TR ^(\d{5})$ 
TW ^(\d{5})$ 
UA ^(\d{5})$ 
US ^\d{5}(-\d{4})?$ 
UY ^(\d{5})$ 
UZ ^(\d{6})$ 
VA ^(\d{5})$ 
VE ^(\d{4})$ 
VI ^\d{5}(-\d{4})?$ 
VN ^(\d{6})$ 
WF ^(986\d{2})$ 
YT ^(\d{5})$ 
ZA ^(\d{4})$ 
ZM ^(\d{5})$ 
CS ^(\d{5})$ 

希望我沒有犯任何錯誤,我正則表達式富是相當薄弱。

5

如果有人在如何驗證郵政編碼仍然有興趣,我找到了解決辦法:

使用Google Geocoding API我們可以檢查的同時具有國家代碼ZIP代碼本身郵政編碼有效性。

比如我住在烏克蘭,所以我可以檢查這樣的: https://maps.googleapis.com/maps/api/geocode/json?components=postal_code:80380|country:UA

或者使用JS API:https://developers.google.com/maps/documentation/javascript/geocoding#ComponentFiltering

哪裏80380是烏克蘭有效的ZIP,實際上每(#####)已驗證。

如果沒有找到,Google會返回ZERO_RESULTS狀態。 或OK和結果,如果兩者都是正確的。

希望這會有所幫助。

相關問題