mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-07-16 09:37:23 +00:00
1719 lines
49 KiB
JSON
1719 lines
49 KiB
JSON
[
|
|
{
|
|
"city": "Cape Town",
|
|
"state_province": "Western Cape",
|
|
"iso3166_2": "ZA-WC",
|
|
"country": "South Africa",
|
|
"iso3166_1": "ZA",
|
|
"latitude": -33.9249,
|
|
"longitude": 18.4241,
|
|
"local_languages": ["af", "en", "xh"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4}$",
|
|
"city_regex": ["^(?:7[0-9]{3}|80[0-9]{2})$"],
|
|
"examples": ["8001", "7700", "7441"],
|
|
"confidence": "medium",
|
|
"notes": "Cape Town metro spans roughly 7000-8099; 7xxx also covers parts of the wider Western Cape."
|
|
}
|
|
},
|
|
{
|
|
"city": "Johannesburg",
|
|
"state_province": "Gauteng",
|
|
"iso3166_2": "ZA-GT",
|
|
"country": "South Africa",
|
|
"iso3166_1": "ZA",
|
|
"latitude": -26.2041,
|
|
"longitude": 28.0473,
|
|
"local_languages": ["en", "zu", "st", "af"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4}$",
|
|
"city_regex": ["^2[01][0-9]{2}$"],
|
|
"examples": ["2001", "2196"],
|
|
"confidence": "medium",
|
|
"notes": "Johannesburg street codes cluster in 2000-2199; PO Box codes differ."
|
|
}
|
|
},
|
|
{
|
|
"city": "Durban",
|
|
"state_province": "KwaZulu-Natal",
|
|
"iso3166_2": "ZA-NL",
|
|
"country": "South Africa",
|
|
"iso3166_1": "ZA",
|
|
"latitude": -29.8587,
|
|
"longitude": 31.0218,
|
|
"local_languages": ["zu", "en"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4}$",
|
|
"city_regex": ["^4[01][0-9]{2}$"],
|
|
"examples": ["4001", "4051"],
|
|
"confidence": "medium",
|
|
"notes": "eThekwini/Durban street codes cluster in 4000-4199."
|
|
}
|
|
},
|
|
{
|
|
"city": "Franschhoek",
|
|
"state_province": "Western Cape",
|
|
"iso3166_2": "ZA-WC",
|
|
"country": "South Africa",
|
|
"iso3166_1": "ZA",
|
|
"latitude": -33.9146,
|
|
"longitude": 19.1198,
|
|
"local_languages": ["af", "en"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4}$",
|
|
"city_regex": ["^7690$"],
|
|
"examples": ["7690"],
|
|
"confidence": "high",
|
|
"notes": "Single town code."
|
|
}
|
|
},
|
|
{
|
|
"city": "Nairobi",
|
|
"state_province": "Nairobi",
|
|
"iso3166_2": "KE-30",
|
|
"country": "Kenya",
|
|
"iso3166_1": "KE",
|
|
"latitude": -1.2921,
|
|
"longitude": 36.8219,
|
|
"local_languages": ["sw", "en"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}$",
|
|
"city_regex": ["^00[1-9][0-9]{2}$"],
|
|
"examples": ["00100", "00200", "00800"],
|
|
"confidence": "high",
|
|
"notes": "All Nairobi County codes begin 00; GPO is 00100. Range 00100-00999."
|
|
}
|
|
},
|
|
{
|
|
"city": "Buenos Aires",
|
|
"state_province": "Buenos Aires City",
|
|
"iso3166_2": "AR-C",
|
|
"country": "Argentina",
|
|
"iso3166_1": "AR",
|
|
"latitude": -34.6037,
|
|
"longitude": -58.3816,
|
|
"local_languages": ["es-AR"],
|
|
"postal_code": {
|
|
"country_format_regex": "^(?:[A-HJ-NP-TV-Z]\\d{4}[A-Z]{3}|\\d{4})$",
|
|
"city_regex": ["^C1[0-4][0-9]{2}[A-Z]{3}$", "^1[0-4][0-9]{2}$"],
|
|
"examples": ["C1425DKE", "1425"],
|
|
"confidence": "high",
|
|
"notes": "CABA uses CPA prefix 'C'. Legacy 4-digit form 1000-1499 still widely accepted."
|
|
}
|
|
},
|
|
{
|
|
"city": "Bariloche",
|
|
"state_province": "Río Negro",
|
|
"iso3166_2": "AR-R",
|
|
"country": "Argentina",
|
|
"iso3166_1": "AR",
|
|
"latitude": -41.1335,
|
|
"longitude": -71.3103,
|
|
"local_languages": ["es-AR"],
|
|
"postal_code": {
|
|
"country_format_regex": "^(?:[A-HJ-NP-TV-Z]\\d{4}[A-Z]{3}|\\d{4})$",
|
|
"city_regex": ["^R8400[A-Z]{3}$", "^8400$"],
|
|
"examples": ["R8400AGC", "8400"],
|
|
"confidence": "high",
|
|
"notes": "San Carlos de Bariloche legacy code 8400; CPA prefix 'R' (Rio Negro)."
|
|
}
|
|
},
|
|
{
|
|
"city": "Bogotá",
|
|
"state_province": "Bogotá D.C.",
|
|
"iso3166_2": "CO-DC",
|
|
"country": "Colombia",
|
|
"iso3166_1": "CO",
|
|
"latitude": 4.711,
|
|
"longitude": -74.0721,
|
|
"local_languages": ["es-CO"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{6}$",
|
|
"city_regex": ["^11[0-9]{4}$"],
|
|
"examples": ["110111", "111321"],
|
|
"confidence": "high",
|
|
"notes": "Bogota D.C. = DANE department code 11."
|
|
}
|
|
},
|
|
{
|
|
"city": "Medellín",
|
|
"state_province": "Antioquia",
|
|
"iso3166_2": "CO-ANT",
|
|
"country": "Colombia",
|
|
"iso3166_1": "CO",
|
|
"latitude": 6.2442,
|
|
"longitude": -75.5812,
|
|
"local_languages": ["es-CO"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{6}$",
|
|
"city_regex": ["^050[0-9]{3}$"],
|
|
"examples": ["050001", "050022"],
|
|
"confidence": "high",
|
|
"notes": "Antioquia = 05; Medellin zone = 050xxx. Wider metro uses 051xxx-055xxx."
|
|
}
|
|
},
|
|
{
|
|
"city": "São Paulo",
|
|
"state_province": "São Paulo",
|
|
"iso3166_2": "BR-SP",
|
|
"country": "Brazil",
|
|
"iso3166_1": "BR",
|
|
"latitude": -23.5505,
|
|
"longitude": -46.6333,
|
|
"local_languages": ["pt-BR"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}-?\\d{3}$",
|
|
"city_regex": [
|
|
"^0[1-5][0-9]{3}-?[0-9]{3}$",
|
|
"^08[0-4][0-9]{2}-?[0-9]{3}$"
|
|
],
|
|
"examples": ["01310-100", "05407-002"],
|
|
"confidence": "high",
|
|
"notes": "Sao Paulo city CEP: 01000-000 to 05999-999, plus 08000-000 to 08499-999."
|
|
}
|
|
},
|
|
{
|
|
"city": "Curitiba",
|
|
"state_province": "Paraná",
|
|
"iso3166_2": "BR-PR",
|
|
"country": "Brazil",
|
|
"iso3166_1": "BR",
|
|
"latitude": -25.4284,
|
|
"longitude": -49.2733,
|
|
"local_languages": ["pt-BR"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}-?\\d{3}$",
|
|
"city_regex": ["^8[0-2][0-9]{3}-?[0-9]{3}$"],
|
|
"examples": ["80010-010", "82590-300"],
|
|
"confidence": "high",
|
|
"notes": "Curitiba CEP: 80000-000 to 82999-999."
|
|
}
|
|
},
|
|
{
|
|
"city": "Rio de Janeiro",
|
|
"state_province": "Rio de Janeiro",
|
|
"iso3166_2": "BR-RJ",
|
|
"country": "Brazil",
|
|
"iso3166_1": "BR",
|
|
"latitude": -22.9068,
|
|
"longitude": -43.1729,
|
|
"local_languages": ["pt-BR"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}-?\\d{3}$",
|
|
"city_regex": ["^(?:2[0-2][0-9]{3}|23[0-7][0-9]{2})-?[0-9]{3}$"],
|
|
"examples": ["20040-020", "22071-900"],
|
|
"confidence": "high",
|
|
"notes": "Rio city CEP: 20000-000 to 23799-999."
|
|
}
|
|
},
|
|
{
|
|
"city": "Santiago",
|
|
"state_province": "Santiago Metropolitan",
|
|
"iso3166_2": "CL-RM",
|
|
"country": "Chile",
|
|
"iso3166_1": "CL",
|
|
"latitude": -33.4489,
|
|
"longitude": -70.6693,
|
|
"local_languages": ["es-CL"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{7}$",
|
|
"city_regex": ["^(?:7[5-9][0-9]|8[0-9]{2}|9[0-2][0-9])[0-9]{4}$"],
|
|
"examples": ["8320000", "7500000"],
|
|
"confidence": "medium",
|
|
"notes": "Santiago Province spans approx. 7500000-9250000; 7xx = eastern communes, 8xx = central."
|
|
}
|
|
},
|
|
{
|
|
"city": "Valdivia",
|
|
"state_province": "Los Ríos",
|
|
"iso3166_2": "CL-LR",
|
|
"country": "Chile",
|
|
"iso3166_1": "CL",
|
|
"latitude": -39.8142,
|
|
"longitude": -73.2459,
|
|
"local_languages": ["es-CL"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{7}$",
|
|
"city_regex": ["^(?:509|51[0-9]|52[0-3])[0-9]{4}$"],
|
|
"examples": ["5090000", "5110000"],
|
|
"confidence": "low",
|
|
"notes": "Los Rios region range approx. 5090000-5230000; Valdivia commune base code 5090000."
|
|
}
|
|
},
|
|
{
|
|
"city": "Lima",
|
|
"state_province": "Lima",
|
|
"iso3166_2": "PE-LMA",
|
|
"country": "Peru",
|
|
"iso3166_1": "PE",
|
|
"latitude": -12.0464,
|
|
"longitude": -77.0428,
|
|
"local_languages": ["es-PE"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}$",
|
|
"city_regex": ["^15[0-9]{3}$"],
|
|
"examples": ["15001", "15074"],
|
|
"confidence": "medium",
|
|
"notes": "Lima Region = prefix 15; metropolitan Lima districts sit in 15001-15099. Callao is 07xxx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Tokyo",
|
|
"state_province": "Tokyo",
|
|
"iso3166_2": "JP-13",
|
|
"country": "Japan",
|
|
"iso3166_1": "JP",
|
|
"latitude": 35.6762,
|
|
"longitude": 139.6503,
|
|
"local_languages": ["ja"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{3}-?\\d{4}$",
|
|
"city_regex": ["^(?:1[0-9]{2}|20[0-8])-?[0-9]{4}$"],
|
|
"examples": ["100-0001", "150-0002"],
|
|
"confidence": "high",
|
|
"notes": "Tokyo Metropolis: 100-xxxx to 208-xxxx. The 23 wards are 100-179."
|
|
}
|
|
},
|
|
{
|
|
"city": "Osaka",
|
|
"state_province": "Osaka",
|
|
"iso3166_2": "JP-27",
|
|
"country": "Japan",
|
|
"iso3166_1": "JP",
|
|
"latitude": 34.6937,
|
|
"longitude": 135.5023,
|
|
"local_languages": ["ja"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{3}-?\\d{4}$",
|
|
"city_regex": ["^5[3-5][0-9]-?[0-9]{4}$"],
|
|
"examples": ["530-0001", "559-0034"],
|
|
"confidence": "high",
|
|
"notes": "Osaka City: 530-xxxx to 559-xxxx. Wider Osaka Prefecture is 5xx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Kyoto",
|
|
"state_province": "Kyoto",
|
|
"iso3166_2": "JP-26",
|
|
"country": "Japan",
|
|
"iso3166_1": "JP",
|
|
"latitude": 35.0116,
|
|
"longitude": 135.7681,
|
|
"local_languages": ["ja"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{3}-?\\d{4}$",
|
|
"city_regex": ["^6(?:0[0-9]|1[0-6])-?[0-9]{4}$"],
|
|
"examples": ["600-8216", "606-8501"],
|
|
"confidence": "high",
|
|
"notes": "Kyoto City: 600-xxxx to 616-xxxx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Sapporo",
|
|
"state_province": "Hokkaido",
|
|
"iso3166_2": "JP-01",
|
|
"country": "Japan",
|
|
"iso3166_1": "JP",
|
|
"latitude": 43.0618,
|
|
"longitude": 141.3545,
|
|
"local_languages": ["ja"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{3}-?\\d{4}$",
|
|
"city_regex": ["^(?:00[1-7]|06[0-5])-?[0-9]{4}$"],
|
|
"examples": ["060-0001", "001-0010"],
|
|
"confidence": "high",
|
|
"notes": "Sapporo: 001-xxxx to 007-xxxx (north/west) and 060-xxxx to 065-xxxx (central/east)."
|
|
}
|
|
},
|
|
{
|
|
"city": "Seoul",
|
|
"state_province": "Seoul",
|
|
"iso3166_2": "KR-11",
|
|
"country": "South Korea",
|
|
"iso3166_1": "KR",
|
|
"latitude": 37.5665,
|
|
"longitude": 126.978,
|
|
"local_languages": ["ko"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}$",
|
|
"city_regex": ["^0[1-9][0-9]{3}$"],
|
|
"examples": ["04524", "06236"],
|
|
"confidence": "high",
|
|
"notes": "Post-2015 5-digit system: Seoul = 01000-09999."
|
|
}
|
|
},
|
|
{
|
|
"city": "Busan",
|
|
"state_province": "Busan",
|
|
"iso3166_2": "KR-26",
|
|
"country": "South Korea",
|
|
"iso3166_1": "KR",
|
|
"latitude": 35.1796,
|
|
"longitude": 129.0756,
|
|
"local_languages": ["ko"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}$",
|
|
"city_regex": ["^4[6-9][0-9]{3}$"],
|
|
"examples": ["48058", "46241"],
|
|
"confidence": "high",
|
|
"notes": "Busan = 46000-49999."
|
|
}
|
|
},
|
|
{
|
|
"city": "Ho Chi Minh City",
|
|
"state_province": "Ho Chi Minh",
|
|
"iso3166_2": "VN-SG",
|
|
"country": "Vietnam",
|
|
"iso3166_1": "VN",
|
|
"latitude": 10.8231,
|
|
"longitude": 106.6297,
|
|
"local_languages": ["vi"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5,6}$",
|
|
"city_regex": ["^7[0-4][0-9]{3}$", "^7[0-4][0-9]{4}$"],
|
|
"examples": ["70000", "71000", "700000"],
|
|
"confidence": "medium",
|
|
"notes": "Current 5-digit system: HCMC = 70000-74999. Legacy/6-digit form (700000) still appears in some systems."
|
|
}
|
|
},
|
|
{
|
|
"city": "Hanoi",
|
|
"state_province": "Hanoi",
|
|
"iso3166_2": "VN-HN",
|
|
"country": "Vietnam",
|
|
"iso3166_1": "VN",
|
|
"latitude": 21.0285,
|
|
"longitude": 105.8542,
|
|
"local_languages": ["vi"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5,6}$",
|
|
"city_regex": ["^1[0-4][0-9]{3}$", "^1[0-4][0-9]{4}$"],
|
|
"examples": ["10000", "11100", "100000"],
|
|
"confidence": "medium",
|
|
"notes": "Hanoi = 10000-14999 (5-digit). Legacy 6-digit form 100000 still in circulation."
|
|
}
|
|
},
|
|
{
|
|
"city": "Da Nang",
|
|
"state_province": "Da Nang",
|
|
"iso3166_2": "VN-DN",
|
|
"country": "Vietnam",
|
|
"iso3166_1": "VN",
|
|
"latitude": 16.0544,
|
|
"longitude": 108.2022,
|
|
"local_languages": ["vi"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5,6}$",
|
|
"city_regex": ["^5[0-5][0-9]{3}$", "^5[0-5][0-9]{4}$"],
|
|
"examples": ["50000", "55000", "550000"],
|
|
"confidence": "low",
|
|
"notes": "Sources conflict: Da Nang is cited as both 50000 and 55000. Pattern accepts 50000-55999 and the 6-digit legacy form."
|
|
}
|
|
},
|
|
{
|
|
"city": "Bangkok",
|
|
"state_province": "Bangkok",
|
|
"iso3166_2": "TH-10",
|
|
"country": "Thailand",
|
|
"iso3166_1": "TH",
|
|
"latitude": 13.7563,
|
|
"longitude": 100.5018,
|
|
"local_languages": ["th"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}$",
|
|
"city_regex": ["^10[0-9]{3}$"],
|
|
"examples": ["10100", "10330"],
|
|
"confidence": "high",
|
|
"notes": "Bangkok = province code 10; codes run 10100-10900."
|
|
}
|
|
},
|
|
{
|
|
"city": "Taipei",
|
|
"state_province": "Taipei",
|
|
"iso3166_2": "TW-TPE",
|
|
"country": "Taiwan",
|
|
"iso3166_1": "TW",
|
|
"latitude": 25.033,
|
|
"longitude": 121.5654,
|
|
"local_languages": ["zh-TW"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{3}(?:\\d{2}|\\d{3})?$",
|
|
"city_regex": ["^1(?:0[0-9]|1[0-6])(?:[0-9]{2}|[0-9]{3})?$"],
|
|
"examples": ["100", "10058", "100013"],
|
|
"confidence": "high",
|
|
"notes": "Taipei City districts = 100-116. 3-digit is valid alone; 3+2 is legacy, 3+3 is current."
|
|
}
|
|
},
|
|
{
|
|
"city": "Beijing",
|
|
"state_province": "Beijing",
|
|
"iso3166_2": "CN-BJ",
|
|
"country": "China",
|
|
"iso3166_1": "CN",
|
|
"latitude": 39.9042,
|
|
"longitude": 116.4074,
|
|
"local_languages": ["zh-CN"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{6}$",
|
|
"city_regex": ["^10[0-2][0-9]{3}$"],
|
|
"examples": ["100000", "100010"],
|
|
"confidence": "high",
|
|
"notes": "Beijing municipality = 100000-102629."
|
|
}
|
|
},
|
|
{
|
|
"city": "Shanghai",
|
|
"state_province": "Shanghai",
|
|
"iso3166_2": "CN-SH",
|
|
"country": "China",
|
|
"iso3166_1": "CN",
|
|
"latitude": 31.2304,
|
|
"longitude": 121.4737,
|
|
"local_languages": ["zh-CN"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{6}$",
|
|
"city_regex": ["^20[0-2][0-9]{3}$"],
|
|
"examples": ["200000", "200080"],
|
|
"confidence": "high",
|
|
"notes": "Shanghai municipality = 200000-202699."
|
|
}
|
|
},
|
|
{
|
|
"city": "Bengaluru",
|
|
"state_province": "Karnataka",
|
|
"iso3166_2": "IN-KA",
|
|
"country": "India",
|
|
"iso3166_1": "IN",
|
|
"latitude": 12.9716,
|
|
"longitude": 77.5946,
|
|
"local_languages": ["kn", "en"],
|
|
"postal_code": {
|
|
"country_format_regex": "^[1-9]\\d{5}$",
|
|
"city_regex": ["^560[0-9]{3}$"],
|
|
"examples": ["560001", "560100"],
|
|
"confidence": "high",
|
|
"notes": "Bengaluru urban PIN codes = 560xxx. Bengaluru Rural uses 561xxx/562xxx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Singapore",
|
|
"state_province": "Central Singapore",
|
|
"iso3166_2": "SG-01",
|
|
"country": "Singapore",
|
|
"iso3166_1": "SG",
|
|
"latitude": 1.3521,
|
|
"longitude": 103.8198,
|
|
"local_languages": ["en", "zh", "ms", "ta"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{6}$",
|
|
"city_regex": ["^[0-8][0-9]{5}$"],
|
|
"examples": ["018956", "238823"],
|
|
"confidence": "high",
|
|
"notes": "Singapore is a single postal district; sectors 01-82 cover the whole island."
|
|
}
|
|
},
|
|
{
|
|
"city": "Melbourne",
|
|
"state_province": "Victoria",
|
|
"iso3166_2": "AU-VIC",
|
|
"country": "Australia",
|
|
"iso3166_1": "AU",
|
|
"latitude": -37.8136,
|
|
"longitude": 144.9631,
|
|
"local_languages": ["en-AU"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4}$",
|
|
"city_regex": ["^3(?:0[0-9]{2}|1[0-9]{2}|20[0-7])$"],
|
|
"examples": ["3000", "3121"],
|
|
"confidence": "medium",
|
|
"notes": "Greater Melbourne approx. 3000-3207. Victoria as a whole is 3000-3999."
|
|
}
|
|
},
|
|
{
|
|
"city": "Sydney",
|
|
"state_province": "New South Wales",
|
|
"iso3166_2": "AU-NSW",
|
|
"country": "Australia",
|
|
"iso3166_1": "AU",
|
|
"latitude": -33.8688,
|
|
"longitude": 151.2093,
|
|
"local_languages": ["en-AU"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4}$",
|
|
"city_regex": ["^(?:1[0-9]{3}|2[0-2][0-9]{2})$"],
|
|
"examples": ["2000", "2010", "1235"],
|
|
"confidence": "medium",
|
|
"notes": "Sydney metro approx. 2000-2249; 1000-1999 are Sydney PO Box / large-volume codes."
|
|
}
|
|
},
|
|
{
|
|
"city": "Brisbane",
|
|
"state_province": "Queensland",
|
|
"iso3166_2": "AU-QLD",
|
|
"country": "Australia",
|
|
"iso3166_1": "AU",
|
|
"latitude": -27.4705,
|
|
"longitude": 153.026,
|
|
"local_languages": ["en-AU"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4}$",
|
|
"city_regex": ["^4(?:0[0-9]{2}|1[0-9]{2}|20[0-7])$"],
|
|
"examples": ["4000", "4101"],
|
|
"confidence": "medium",
|
|
"notes": "Greater Brisbane approx. 4000-4207."
|
|
}
|
|
},
|
|
{
|
|
"city": "Adelaide",
|
|
"state_province": "South Australia",
|
|
"iso3166_2": "AU-SA",
|
|
"country": "Australia",
|
|
"iso3166_1": "AU",
|
|
"latitude": -34.9285,
|
|
"longitude": 138.6007,
|
|
"local_languages": ["en-AU"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4}$",
|
|
"city_regex": ["^5[01][0-9]{2}$"],
|
|
"examples": ["5000", "5067"],
|
|
"confidence": "medium",
|
|
"notes": "Adelaide metro approx. 5000-5199."
|
|
}
|
|
},
|
|
{
|
|
"city": "Perth",
|
|
"state_province": "Western Australia",
|
|
"iso3166_2": "AU-WA",
|
|
"country": "Australia",
|
|
"iso3166_1": "AU",
|
|
"latitude": -31.9505,
|
|
"longitude": 115.8605,
|
|
"local_languages": ["en-AU"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4}$",
|
|
"city_regex": ["^6[01][0-9]{2}$"],
|
|
"examples": ["6000", "6151"],
|
|
"confidence": "medium",
|
|
"notes": "Perth metro approx. 6000-6199."
|
|
}
|
|
},
|
|
{
|
|
"city": "Hobart",
|
|
"state_province": "Tasmania",
|
|
"iso3166_2": "AU-TAS",
|
|
"country": "Australia",
|
|
"iso3166_1": "AU",
|
|
"latitude": -42.8821,
|
|
"longitude": 147.3272,
|
|
"local_languages": ["en-AU"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4}$",
|
|
"city_regex": ["^70[0-9]{2}$"],
|
|
"examples": ["7000", "7050"],
|
|
"confidence": "medium",
|
|
"notes": "Hobart approx. 7000-7099."
|
|
}
|
|
},
|
|
{
|
|
"city": "Wellington",
|
|
"state_province": "Wellington",
|
|
"iso3166_2": "NZ-WGN",
|
|
"country": "New Zealand",
|
|
"iso3166_1": "NZ",
|
|
"latitude": -41.2865,
|
|
"longitude": 174.7762,
|
|
"local_languages": ["en", "mi"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4}$",
|
|
"city_regex": ["^60[0-9]{2}$"],
|
|
"examples": ["6011", "6021"],
|
|
"confidence": "medium",
|
|
"notes": "Wellington City = 6011-6037. Wider region extends to 5010-5999."
|
|
}
|
|
},
|
|
{
|
|
"city": "Auckland",
|
|
"state_province": "Auckland",
|
|
"iso3166_2": "NZ-AUK",
|
|
"country": "New Zealand",
|
|
"iso3166_1": "NZ",
|
|
"latitude": -36.8485,
|
|
"longitude": 174.7633,
|
|
"local_languages": ["en", "mi"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4}$",
|
|
"city_regex": ["^(?:0[6-9][0-9]{2}|10[0-9]{2}|2[0-6][0-9]{2})$"],
|
|
"examples": ["1010", "0620", "2013"],
|
|
"confidence": "low",
|
|
"notes": "Auckland is non-contiguous: 0600-0999 (north/west), 1010-1081 (central), 2010-2699 (south)."
|
|
}
|
|
},
|
|
{
|
|
"city": "Christchurch",
|
|
"state_province": "Canterbury",
|
|
"iso3166_2": "NZ-CAN",
|
|
"country": "New Zealand",
|
|
"iso3166_1": "NZ",
|
|
"latitude": -43.532,
|
|
"longitude": 172.6306,
|
|
"local_languages": ["en", "mi"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4}$",
|
|
"city_regex": ["^80[0-9]{2}$"],
|
|
"examples": ["8011", "8041"],
|
|
"confidence": "medium",
|
|
"notes": "Christchurch City = 8011-8062. Canterbury region extends 7600-8999."
|
|
}
|
|
},
|
|
{
|
|
"city": "Nelson",
|
|
"state_province": "Nelson",
|
|
"iso3166_2": "NZ-NSN",
|
|
"country": "New Zealand",
|
|
"iso3166_1": "NZ",
|
|
"latitude": -41.2706,
|
|
"longitude": 173.284,
|
|
"local_languages": ["en", "mi"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4}$",
|
|
"city_regex": ["^70[0-9]{2}$"],
|
|
"examples": ["7010", "7011"],
|
|
"confidence": "medium",
|
|
"notes": "Nelson City = 7010-7011 and 7040-7047."
|
|
}
|
|
},
|
|
{
|
|
"city": "Munich",
|
|
"state_province": "Bavaria",
|
|
"iso3166_2": "DE-BY",
|
|
"country": "Germany",
|
|
"iso3166_1": "DE",
|
|
"latitude": 48.1351,
|
|
"longitude": 11.582,
|
|
"local_languages": ["de"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}$",
|
|
"city_regex": ["^8[01][0-9]{3}$"],
|
|
"examples": ["80331", "81929"],
|
|
"confidence": "high",
|
|
"notes": "Munich = 80331-81929."
|
|
}
|
|
},
|
|
{
|
|
"city": "Berlin",
|
|
"state_province": "Berlin",
|
|
"iso3166_2": "DE-BE",
|
|
"country": "Germany",
|
|
"iso3166_1": "DE",
|
|
"latitude": 52.52,
|
|
"longitude": 13.405,
|
|
"local_languages": ["de"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}$",
|
|
"city_regex": ["^1[0-4][0-9]{3}$"],
|
|
"examples": ["10115", "14199"],
|
|
"confidence": "high",
|
|
"notes": "Berlin = 10115-14199."
|
|
}
|
|
},
|
|
{
|
|
"city": "Cologne",
|
|
"state_province": "North Rhine-Westphalia",
|
|
"iso3166_2": "DE-NW",
|
|
"country": "Germany",
|
|
"iso3166_1": "DE",
|
|
"latitude": 50.9375,
|
|
"longitude": 6.9603,
|
|
"local_languages": ["de"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}$",
|
|
"city_regex": ["^(?:50[6-9][0-9]{2}|51[01][0-9]{2})$"],
|
|
"examples": ["50667", "51149"],
|
|
"confidence": "high",
|
|
"notes": "Cologne = 50667-51149."
|
|
}
|
|
},
|
|
{
|
|
"city": "Bamberg",
|
|
"state_province": "Bavaria",
|
|
"iso3166_2": "DE-BY",
|
|
"country": "Germany",
|
|
"iso3166_1": "DE",
|
|
"latitude": 49.8916,
|
|
"longitude": 10.8916,
|
|
"local_languages": ["de"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}$",
|
|
"city_regex": ["^960(?:4[7-9]|5[0-2])$"],
|
|
"examples": ["96047", "96052"],
|
|
"confidence": "high",
|
|
"notes": "Bamberg = 96047-96052."
|
|
}
|
|
},
|
|
{
|
|
"city": "Brussels",
|
|
"state_province": "Brussels-Capital",
|
|
"iso3166_2": "BE-BRU",
|
|
"country": "Belgium",
|
|
"iso3166_1": "BE",
|
|
"latitude": 50.8503,
|
|
"longitude": 4.3517,
|
|
"local_languages": ["fr", "nl"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4}$",
|
|
"city_regex": ["^1(?:0[0-9]{2}|1[0-9]{2}|20[0-9]|210)$"],
|
|
"examples": ["1000", "1210"],
|
|
"confidence": "high",
|
|
"notes": "Brussels-Capital Region = 1000-1210."
|
|
}
|
|
},
|
|
{
|
|
"city": "Antwerp",
|
|
"state_province": "Flanders",
|
|
"iso3166_2": "BE-VLG",
|
|
"country": "Belgium",
|
|
"iso3166_1": "BE",
|
|
"latitude": 51.2194,
|
|
"longitude": 4.4025,
|
|
"local_languages": ["nl"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4}$",
|
|
"city_regex": ["^2[0-6][0-9]{2}$"],
|
|
"examples": ["2000", "2660"],
|
|
"confidence": "medium",
|
|
"notes": "City of Antwerp = 2000-2660; 2xxx also covers other Antwerp Province towns."
|
|
}
|
|
},
|
|
{
|
|
"city": "Bruges",
|
|
"state_province": "Flanders",
|
|
"iso3166_2": "BE-VLG",
|
|
"country": "Belgium",
|
|
"iso3166_1": "BE",
|
|
"latitude": 51.2093,
|
|
"longitude": 3.2247,
|
|
"local_languages": ["nl"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4}$",
|
|
"city_regex": ["^(?:8000|820[01]|831[01]|834[01]|838[01])$"],
|
|
"examples": ["8000", "8200", "8310", "8380"],
|
|
"confidence": "medium",
|
|
"notes": "Bruges uses discrete codes: 8000 (centre), 8200, 8310, 8340, 8380 (submunicipalities)."
|
|
}
|
|
},
|
|
{
|
|
"city": "London",
|
|
"state_province": "England",
|
|
"iso3166_2": "GB-ENG",
|
|
"country": "United Kingdom",
|
|
"iso3166_1": "GB",
|
|
"latitude": 51.5074,
|
|
"longitude": -0.1278,
|
|
"local_languages": ["en-GB"],
|
|
"postal_code": {
|
|
"country_format_regex": "^[A-Z]{1,2}\\d[A-Z\\d]? ?\\d[A-Z]{2}$",
|
|
"city_regex": [
|
|
"^(?:EC|WC|NW|SE|SW|E|N|W)[0-9][A-Z0-9]? ?[0-9][A-Z]{2}$",
|
|
"^(?:BR|CR|DA|EN|HA|IG|KT|RM|SM|TW|UB|WD)[0-9]{1,2} ?[0-9][A-Z]{2}$"
|
|
],
|
|
"examples": ["EC1A 1BB", "SW1A 2AA", "N1 9GU"],
|
|
"confidence": "high",
|
|
"notes": "First pattern = inner London postcode areas; second = outer Greater London areas."
|
|
}
|
|
},
|
|
{
|
|
"city": "Bristol",
|
|
"state_province": "England",
|
|
"iso3166_2": "GB-ENG",
|
|
"country": "United Kingdom",
|
|
"iso3166_1": "GB",
|
|
"latitude": 51.4545,
|
|
"longitude": -2.5879,
|
|
"local_languages": ["en-GB"],
|
|
"postal_code": {
|
|
"country_format_regex": "^[A-Z]{1,2}\\d[A-Z\\d]? ?\\d[A-Z]{2}$",
|
|
"city_regex": ["^BS[0-9]{1,2} ?[0-9][A-Z]{2}$"],
|
|
"examples": ["BS1 4DJ", "BS8 1TH"],
|
|
"confidence": "high",
|
|
"notes": "BS postcode area (also covers parts of North Somerset / South Gloucestershire)."
|
|
}
|
|
},
|
|
{
|
|
"city": "Edinburgh",
|
|
"state_province": "Scotland",
|
|
"iso3166_2": "GB-SCT",
|
|
"country": "United Kingdom",
|
|
"iso3166_1": "GB",
|
|
"latitude": 55.9533,
|
|
"longitude": -3.1883,
|
|
"local_languages": ["en-GB", "gd"],
|
|
"postal_code": {
|
|
"country_format_regex": "^[A-Z]{1,2}\\d[A-Z\\d]? ?\\d[A-Z]{2}$",
|
|
"city_regex": ["^EH[0-9]{1,2} ?[0-9][A-Z]{2}$"],
|
|
"examples": ["EH1 1YZ", "EH8 9YL"],
|
|
"confidence": "high",
|
|
"notes": "EH postcode area."
|
|
}
|
|
},
|
|
{
|
|
"city": "Glasgow",
|
|
"state_province": "Scotland",
|
|
"iso3166_2": "GB-SCT",
|
|
"country": "United Kingdom",
|
|
"iso3166_1": "GB",
|
|
"latitude": 55.8642,
|
|
"longitude": -4.2518,
|
|
"local_languages": ["en-GB", "gd"],
|
|
"postal_code": {
|
|
"country_format_regex": "^[A-Z]{1,2}\\d[A-Z\\d]? ?\\d[A-Z]{2}$",
|
|
"city_regex": ["^G[0-9]{1,2} ?[0-9][A-Z]{2}$"],
|
|
"examples": ["G1 1XW", "G12 8QQ"],
|
|
"confidence": "high",
|
|
"notes": "G postcode area."
|
|
}
|
|
},
|
|
{
|
|
"city": "Prague",
|
|
"state_province": "Prague",
|
|
"iso3166_2": "CZ-10",
|
|
"country": "Czechia",
|
|
"iso3166_1": "CZ",
|
|
"latitude": 50.0755,
|
|
"longitude": 14.4378,
|
|
"local_languages": ["cs"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{3} ?\\d{2}$",
|
|
"city_regex": ["^1[0-9]{2} ?[0-9]{2}$"],
|
|
"examples": ["110 00", "190 00"],
|
|
"confidence": "high",
|
|
"notes": "Prague = 100 00 - 199 00."
|
|
}
|
|
},
|
|
{
|
|
"city": "Pilsen",
|
|
"state_province": "Plzeň",
|
|
"iso3166_2": "CZ-32",
|
|
"country": "Czechia",
|
|
"iso3166_1": "CZ",
|
|
"latitude": 49.7384,
|
|
"longitude": 13.3736,
|
|
"local_languages": ["cs"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{3} ?\\d{2}$",
|
|
"city_regex": ["^3(?:0[0-9]|1[0-2]) ?[0-9]{2}$"],
|
|
"examples": ["301 00", "312 00"],
|
|
"confidence": "high",
|
|
"notes": "Plzen = 301 00 - 312 00."
|
|
}
|
|
},
|
|
{
|
|
"city": "Amsterdam",
|
|
"state_province": "North Holland",
|
|
"iso3166_2": "NL-NH",
|
|
"country": "Netherlands",
|
|
"iso3166_1": "NL",
|
|
"latitude": 52.3676,
|
|
"longitude": 4.9041,
|
|
"local_languages": ["nl"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4} ?[A-Z]{2}$",
|
|
"city_regex": ["^(?:10[0-9]{2}|110[0-9]) ?[A-Z]{2}$"],
|
|
"examples": ["1011 AB", "1098 XG"],
|
|
"confidence": "high",
|
|
"notes": "Amsterdam = 1000-1109 numeric part."
|
|
}
|
|
},
|
|
{
|
|
"city": "Copenhagen",
|
|
"state_province": "Capital Region",
|
|
"iso3166_2": "DK-84",
|
|
"country": "Denmark",
|
|
"iso3166_1": "DK",
|
|
"latitude": 55.6761,
|
|
"longitude": 12.5683,
|
|
"local_languages": ["da"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4}$",
|
|
"city_regex": ["^(?:1[0-4][0-9]{2}|2[0-5][0-9]{2})$"],
|
|
"examples": ["1050", "2100"],
|
|
"confidence": "medium",
|
|
"notes": "Copenhagen K = 1000-1499; Frederiksberg and surrounding districts = 1800-2500."
|
|
}
|
|
},
|
|
{
|
|
"city": "Warsaw",
|
|
"state_province": "Masovian",
|
|
"iso3166_2": "PL-MZ",
|
|
"country": "Poland",
|
|
"iso3166_1": "PL",
|
|
"latitude": 52.2297,
|
|
"longitude": 21.0122,
|
|
"local_languages": ["pl"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{2}-\\d{3}$",
|
|
"city_regex": ["^0[0-4]-[0-9]{3}$"],
|
|
"examples": ["00-001", "04-999"],
|
|
"confidence": "high",
|
|
"notes": "Warsaw = 00-001 to 04-999."
|
|
}
|
|
},
|
|
{
|
|
"city": "Krakow",
|
|
"state_province": "Lesser Poland",
|
|
"iso3166_2": "PL-MA",
|
|
"country": "Poland",
|
|
"iso3166_1": "PL",
|
|
"latitude": 50.0647,
|
|
"longitude": 19.945,
|
|
"local_languages": ["pl"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{2}-\\d{3}$",
|
|
"city_regex": ["^3[01]-[0-9]{3}$"],
|
|
"examples": ["30-001", "31-999"],
|
|
"confidence": "high",
|
|
"notes": "Krakow = 30-001 to 31-999."
|
|
}
|
|
},
|
|
{
|
|
"city": "Rome",
|
|
"state_province": "Lazio",
|
|
"iso3166_2": "IT-62",
|
|
"country": "Italy",
|
|
"iso3166_1": "IT",
|
|
"latitude": 41.9028,
|
|
"longitude": 12.4964,
|
|
"local_languages": ["it"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}$",
|
|
"city_regex": ["^001[0-9]{2}$"],
|
|
"examples": ["00118", "00199"],
|
|
"confidence": "high",
|
|
"notes": "Rome = 00118-00199 (00120 = Vatican City, a separate state)."
|
|
}
|
|
},
|
|
{
|
|
"city": "Milan",
|
|
"state_province": "Lombardy",
|
|
"iso3166_2": "IT-25",
|
|
"country": "Italy",
|
|
"iso3166_1": "IT",
|
|
"latitude": 45.4642,
|
|
"longitude": 9.19,
|
|
"local_languages": ["it"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}$",
|
|
"city_regex": ["^201[0-9]{2}$"],
|
|
"examples": ["20121", "20162"],
|
|
"confidence": "high",
|
|
"notes": "Milan city = 20121-20162."
|
|
}
|
|
},
|
|
{
|
|
"city": "Barcelona",
|
|
"state_province": "Catalonia",
|
|
"iso3166_2": "ES-CT",
|
|
"country": "Spain",
|
|
"iso3166_1": "ES",
|
|
"latitude": 41.3851,
|
|
"longitude": 2.1734,
|
|
"local_languages": ["ca", "es"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}$",
|
|
"city_regex": ["^080[0-9]{2}$"],
|
|
"examples": ["08001", "08042"],
|
|
"confidence": "high",
|
|
"notes": "Barcelona city = 08001-08042. Province is 08xxx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Madrid",
|
|
"state_province": "Madrid",
|
|
"iso3166_2": "ES-MD",
|
|
"country": "Spain",
|
|
"iso3166_1": "ES",
|
|
"latitude": 40.4168,
|
|
"longitude": -3.7038,
|
|
"local_languages": ["es"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}$",
|
|
"city_regex": ["^280[0-9]{2}$"],
|
|
"examples": ["28001", "28080"],
|
|
"confidence": "high",
|
|
"notes": "Madrid city = 28001-28080. Community of Madrid is 28xxx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Paris",
|
|
"state_province": "Île-de-France",
|
|
"iso3166_2": "FR-IDF",
|
|
"country": "France",
|
|
"iso3166_1": "FR",
|
|
"latitude": 48.8566,
|
|
"longitude": 2.3522,
|
|
"local_languages": ["fr"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}$",
|
|
"city_regex": ["^75(?:0(?:0[1-9]|1[0-9]|20)|116)$"],
|
|
"examples": ["75001", "75020", "75116"],
|
|
"confidence": "high",
|
|
"notes": "Paris = 75001-75020, plus 75116 (a second code for the 16th arrondissement)."
|
|
}
|
|
},
|
|
{
|
|
"city": "Lyon",
|
|
"state_province": "Auvergne-Rhône-Alpes",
|
|
"iso3166_2": "FR-ARA",
|
|
"country": "France",
|
|
"iso3166_1": "FR",
|
|
"latitude": 45.764,
|
|
"longitude": 4.8357,
|
|
"local_languages": ["fr"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}$",
|
|
"city_regex": ["^6900[1-9]$"],
|
|
"examples": ["69001", "69009"],
|
|
"confidence": "high",
|
|
"notes": "Lyon = 69001-69009 (nine arrondissements)."
|
|
}
|
|
},
|
|
{
|
|
"city": "Stockholm",
|
|
"state_province": "Stockholm",
|
|
"iso3166_2": "SE-AB",
|
|
"country": "Sweden",
|
|
"iso3166_1": "SE",
|
|
"latitude": 59.3293,
|
|
"longitude": 18.0686,
|
|
"local_languages": ["sv"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{3} ?\\d{2}$",
|
|
"city_regex": ["^1[0-9]{2} ?[0-9]{2}$"],
|
|
"examples": ["111 22", "190 47"],
|
|
"confidence": "medium",
|
|
"notes": "Stockholm County = 1xx xx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Gothenburg",
|
|
"state_province": "Västra Götaland",
|
|
"iso3166_2": "SE-O",
|
|
"country": "Sweden",
|
|
"iso3166_1": "SE",
|
|
"latitude": 57.7089,
|
|
"longitude": 11.9746,
|
|
"local_languages": ["sv"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{3} ?\\d{2}$",
|
|
"city_regex": ["^4[0-2][0-9] ?[0-9]{2}$"],
|
|
"examples": ["411 05", "425 41"],
|
|
"confidence": "medium",
|
|
"notes": "Gothenburg = 400 00 - 425 99."
|
|
}
|
|
},
|
|
{
|
|
"city": "Oslo",
|
|
"state_province": "Oslo",
|
|
"iso3166_2": "NO-03",
|
|
"country": "Norway",
|
|
"iso3166_1": "NO",
|
|
"latitude": 59.9139,
|
|
"longitude": 10.7522,
|
|
"local_languages": ["no"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4}$",
|
|
"city_regex": ["^0[0-9]{3}$"],
|
|
"examples": ["0010", "0980"],
|
|
"confidence": "medium",
|
|
"notes": "Oslo = 0001-1295; the 0xxx block is the city proper."
|
|
}
|
|
},
|
|
{
|
|
"city": "Dublin",
|
|
"state_province": "Leinster",
|
|
"iso3166_2": "IE-L",
|
|
"country": "Ireland",
|
|
"iso3166_1": "IE",
|
|
"latitude": 53.3498,
|
|
"longitude": -6.2603,
|
|
"local_languages": ["en", "ga"],
|
|
"postal_code": {
|
|
"country_format_regex": "^(?:D6W|[AC-FHKNPRTV-Y]\\d{2}) ?[0-9AC-FHKNPRTV-Y]{4}$",
|
|
"city_regex": [
|
|
"^(?:D6W|D0[1-9]|D1[0-8]|D2[024]) ?[0-9AC-FHKNPRTV-Y]{4}$"
|
|
],
|
|
"examples": ["D01 Y981", "D02 K303", "D6W XY00"],
|
|
"confidence": "high",
|
|
"notes": "Dublin routing keys: D01-D18, D20, D22, D24 and the exception D6W. Note D19, D21, D23 are not issued."
|
|
}
|
|
},
|
|
{
|
|
"city": "Vienna",
|
|
"state_province": "Vienna",
|
|
"iso3166_2": "AT-9",
|
|
"country": "Austria",
|
|
"iso3166_1": "AT",
|
|
"latitude": 48.2082,
|
|
"longitude": 16.3738,
|
|
"local_languages": ["de-AT"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4}$",
|
|
"city_regex": ["^1(?:0[1-9]0|1[0-9]0|2[0-3]0)$"],
|
|
"examples": ["1010", "1230"],
|
|
"confidence": "high",
|
|
"notes": "Vienna = 1010-1230, always ending in 0 (district number x10)."
|
|
}
|
|
},
|
|
{
|
|
"city": "Zurich",
|
|
"state_province": "Zurich",
|
|
"iso3166_2": "CH-ZH",
|
|
"country": "Switzerland",
|
|
"iso3166_1": "CH",
|
|
"latitude": 47.3769,
|
|
"longitude": 8.5417,
|
|
"local_languages": ["de-CH"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{4}$",
|
|
"city_regex": ["^80[0-6][0-9]$"],
|
|
"examples": ["8001", "8064"],
|
|
"confidence": "high",
|
|
"notes": "City of Zurich = 8001-8064."
|
|
}
|
|
},
|
|
{
|
|
"city": "Tallinn",
|
|
"state_province": "Harju",
|
|
"iso3166_2": "EE-37",
|
|
"country": "Estonia",
|
|
"iso3166_1": "EE",
|
|
"latitude": 59.437,
|
|
"longitude": 24.7536,
|
|
"local_languages": ["et"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}$",
|
|
"city_regex": ["^1[0-3][0-9]{3}$"],
|
|
"examples": ["10111", "13516"],
|
|
"confidence": "medium",
|
|
"notes": "Tallinn = 10xxx-13xxx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Denver",
|
|
"state_province": "Colorado",
|
|
"iso3166_2": "US-CO",
|
|
"country": "United States",
|
|
"iso3166_1": "US",
|
|
"latitude": 39.7392,
|
|
"longitude": -104.9903,
|
|
"local_languages": ["en-US"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
|
|
"city_regex": ["^80[2-3][0-9]{2}(?:-[0-9]{4})?$"],
|
|
"examples": ["80202", "80249"],
|
|
"confidence": "high",
|
|
"notes": "Denver = 80202-80249 plus 80290-80299."
|
|
}
|
|
},
|
|
{
|
|
"city": "Portland",
|
|
"state_province": "Oregon",
|
|
"iso3166_2": "US-OR",
|
|
"country": "United States",
|
|
"iso3166_1": "US",
|
|
"latitude": 45.5152,
|
|
"longitude": -122.6784,
|
|
"local_languages": ["en-US"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
|
|
"city_regex": ["^972[0-9]{2}(?:-[0-9]{4})?$"],
|
|
"examples": ["97201", "97294"],
|
|
"confidence": "high",
|
|
"notes": "Portland, Oregon = 972xx."
|
|
}
|
|
},
|
|
{
|
|
"city": "San Diego",
|
|
"state_province": "California",
|
|
"iso3166_2": "US-CA",
|
|
"country": "United States",
|
|
"iso3166_1": "US",
|
|
"latitude": 32.7157,
|
|
"longitude": -117.1611,
|
|
"local_languages": ["en-US", "es-US"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
|
|
"city_regex": ["^921[0-9]{2}(?:-[0-9]{4})?$"],
|
|
"examples": ["92101", "92199"],
|
|
"confidence": "high",
|
|
"notes": "San Diego = 921xx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Asheville",
|
|
"state_province": "North Carolina",
|
|
"iso3166_2": "US-NC",
|
|
"country": "United States",
|
|
"iso3166_1": "US",
|
|
"latitude": 35.5951,
|
|
"longitude": -82.5515,
|
|
"local_languages": ["en-US"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
|
|
"city_regex": ["^288[0-1][0-9](?:-[0-9]{4})?$"],
|
|
"examples": ["28801", "28816"],
|
|
"confidence": "high",
|
|
"notes": "Asheville = 28801-28816."
|
|
}
|
|
},
|
|
{
|
|
"city": "Grand Rapids",
|
|
"state_province": "Michigan",
|
|
"iso3166_2": "US-MI",
|
|
"country": "United States",
|
|
"iso3166_1": "US",
|
|
"latitude": 42.9634,
|
|
"longitude": -85.6681,
|
|
"local_languages": ["en-US"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
|
|
"city_regex": ["^495[0-9]{2}(?:-[0-9]{4})?$"],
|
|
"examples": ["49503", "49546"],
|
|
"confidence": "high",
|
|
"notes": "Grand Rapids = 495xx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Chicago",
|
|
"state_province": "Illinois",
|
|
"iso3166_2": "US-IL",
|
|
"country": "United States",
|
|
"iso3166_1": "US",
|
|
"latitude": 41.8781,
|
|
"longitude": -87.6298,
|
|
"local_languages": ["en-US", "es-US"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
|
|
"city_regex": ["^60[6-8][0-9]{2}(?:-[0-9]{4})?$"],
|
|
"examples": ["60601", "60661"],
|
|
"confidence": "high",
|
|
"notes": "Chicago = 606xx-608xx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Seattle",
|
|
"state_province": "Washington",
|
|
"iso3166_2": "US-WA",
|
|
"country": "United States",
|
|
"iso3166_1": "US",
|
|
"latitude": 47.6062,
|
|
"longitude": -122.3321,
|
|
"local_languages": ["en-US"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
|
|
"city_regex": ["^981[0-9]{2}(?:-[0-9]{4})?$"],
|
|
"examples": ["98101", "98199"],
|
|
"confidence": "high",
|
|
"notes": "Seattle = 981xx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Austin",
|
|
"state_province": "Texas",
|
|
"iso3166_2": "US-TX",
|
|
"country": "United States",
|
|
"iso3166_1": "US",
|
|
"latitude": 30.2672,
|
|
"longitude": -97.7431,
|
|
"local_languages": ["en-US", "es-US"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
|
|
"city_regex": ["^787[0-9]{2}(?:-[0-9]{4})?$"],
|
|
"examples": ["78701", "78799"],
|
|
"confidence": "high",
|
|
"notes": "Austin = 787xx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Boston",
|
|
"state_province": "Massachusetts",
|
|
"iso3166_2": "US-MA",
|
|
"country": "United States",
|
|
"iso3166_1": "US",
|
|
"latitude": 42.3601,
|
|
"longitude": -71.0589,
|
|
"local_languages": ["en-US"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
|
|
"city_regex": ["^02[12][0-9]{2}(?:-[0-9]{4})?$"],
|
|
"examples": ["02108", "02215"],
|
|
"confidence": "high",
|
|
"notes": "Boston = 021xx and 022xx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Philadelphia",
|
|
"state_province": "Pennsylvania",
|
|
"iso3166_2": "US-PA",
|
|
"country": "United States",
|
|
"iso3166_1": "US",
|
|
"latitude": 39.9526,
|
|
"longitude": -75.1652,
|
|
"local_languages": ["en-US"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
|
|
"city_regex": ["^191[0-9]{2}(?:-[0-9]{4})?$"],
|
|
"examples": ["19102", "19147"],
|
|
"confidence": "high",
|
|
"notes": "Philadelphia = 191xx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Brooklyn",
|
|
"state_province": "New York",
|
|
"iso3166_2": "US-NY",
|
|
"country": "United States",
|
|
"iso3166_1": "US",
|
|
"latitude": 40.6782,
|
|
"longitude": -73.9442,
|
|
"local_languages": ["en-US", "es-US"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
|
|
"city_regex": ["^112[0-9]{2}(?:-[0-9]{4})?$"],
|
|
"examples": ["11201", "11256"],
|
|
"confidence": "high",
|
|
"notes": "Brooklyn = 112xx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Milwaukee",
|
|
"state_province": "Wisconsin",
|
|
"iso3166_2": "US-WI",
|
|
"country": "United States",
|
|
"iso3166_1": "US",
|
|
"latitude": 43.0389,
|
|
"longitude": -87.9065,
|
|
"local_languages": ["en-US"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
|
|
"city_regex": ["^532[0-9]{2}(?:-[0-9]{4})?$"],
|
|
"examples": ["53202", "53233"],
|
|
"confidence": "high",
|
|
"notes": "Milwaukee = 532xx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Richmond",
|
|
"state_province": "Virginia",
|
|
"iso3166_2": "US-VA",
|
|
"country": "United States",
|
|
"iso3166_1": "US",
|
|
"latitude": 37.5407,
|
|
"longitude": -77.436,
|
|
"local_languages": ["en-US"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
|
|
"city_regex": ["^232[0-9]{2}(?:-[0-9]{4})?$"],
|
|
"examples": ["23219", "23298"],
|
|
"confidence": "high",
|
|
"notes": "Richmond = 232xx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Cincinnati",
|
|
"state_province": "Ohio",
|
|
"iso3166_2": "US-OH",
|
|
"country": "United States",
|
|
"iso3166_1": "US",
|
|
"latitude": 39.1031,
|
|
"longitude": -84.512,
|
|
"local_languages": ["en-US"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
|
|
"city_regex": ["^452[0-9]{2}(?:-[0-9]{4})?$"],
|
|
"examples": ["45202", "45255"],
|
|
"confidence": "high",
|
|
"notes": "Cincinnati = 452xx."
|
|
}
|
|
},
|
|
{
|
|
"city": "St. Louis",
|
|
"state_province": "Missouri",
|
|
"iso3166_2": "US-MO",
|
|
"country": "United States",
|
|
"iso3166_1": "US",
|
|
"latitude": 38.627,
|
|
"longitude": -90.1994,
|
|
"local_languages": ["en-US"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
|
|
"city_regex": ["^631[0-9]{2}(?:-[0-9]{4})?$"],
|
|
"examples": ["63101", "63139"],
|
|
"confidence": "high",
|
|
"notes": "St. Louis = 631xx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Tampa",
|
|
"state_province": "Florida",
|
|
"iso3166_2": "US-FL",
|
|
"country": "United States",
|
|
"iso3166_1": "US",
|
|
"latitude": 27.9506,
|
|
"longitude": -82.4572,
|
|
"local_languages": ["en-US", "es-US"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
|
|
"city_regex": ["^336[0-9]{2}(?:-[0-9]{4})?$"],
|
|
"examples": ["33602", "33647"],
|
|
"confidence": "high",
|
|
"notes": "Tampa = 336xx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Minneapolis",
|
|
"state_province": "Minnesota",
|
|
"iso3166_2": "US-MN",
|
|
"country": "United States",
|
|
"iso3166_1": "US",
|
|
"latitude": 44.9778,
|
|
"longitude": -93.265,
|
|
"local_languages": ["en-US"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
|
|
"city_regex": ["^554[0-9]{2}(?:-[0-9]{4})?$"],
|
|
"examples": ["55401", "55488"],
|
|
"confidence": "high",
|
|
"notes": "Minneapolis = 554xx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Burlington",
|
|
"state_province": "Vermont",
|
|
"iso3166_2": "US-VT",
|
|
"country": "United States",
|
|
"iso3166_1": "US",
|
|
"latitude": 44.4759,
|
|
"longitude": -73.2121,
|
|
"local_languages": ["en-US"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
|
|
"city_regex": ["^054[0-9]{2}(?:-[0-9]{4})?$"],
|
|
"examples": ["05401", "05408"],
|
|
"confidence": "high",
|
|
"notes": "Burlington = 054xx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Portland",
|
|
"state_province": "Maine",
|
|
"iso3166_2": "US-ME",
|
|
"country": "United States",
|
|
"iso3166_1": "US",
|
|
"latitude": 43.6591,
|
|
"longitude": -70.2568,
|
|
"local_languages": ["en-US"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
|
|
"city_regex": ["^041[0-9]{2}(?:-[0-9]{4})?$"],
|
|
"examples": ["04101", "04124"],
|
|
"confidence": "high",
|
|
"notes": "Portland, Maine = 041xx. Distinct from Portland, Oregon (972xx)."
|
|
}
|
|
},
|
|
{
|
|
"city": "Atlanta",
|
|
"state_province": "Georgia",
|
|
"iso3166_2": "US-GA",
|
|
"country": "United States",
|
|
"iso3166_1": "US",
|
|
"latitude": 33.749,
|
|
"longitude": -84.388,
|
|
"local_languages": ["en-US"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}(?:-\\d{4})?$",
|
|
"city_regex": ["^30[3-9][0-9]{2}(?:-[0-9]{4})?$"],
|
|
"examples": ["30303", "30363"],
|
|
"confidence": "medium",
|
|
"notes": "Atlanta city = 303xx; the wider metro extends across 303xx-309xx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Toronto",
|
|
"state_province": "Ontario",
|
|
"iso3166_2": "CA-ON",
|
|
"country": "Canada",
|
|
"iso3166_1": "CA",
|
|
"latitude": 43.651,
|
|
"longitude": -79.347,
|
|
"local_languages": ["en-CA"],
|
|
"postal_code": {
|
|
"country_format_regex": "^[ABCEGHJ-NPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z] ?\\d[ABCEGHJ-NPRSTV-Z]\\d$",
|
|
"city_regex": [
|
|
"^M[0-9][ABCEGHJ-NPRSTV-Z] ?[0-9][ABCEGHJ-NPRSTV-Z][0-9]$"
|
|
],
|
|
"examples": ["M5H 2N2", "M4B 1B3"],
|
|
"confidence": "high",
|
|
"notes": "Toronto = the entire 'M' forward sortation area."
|
|
}
|
|
},
|
|
{
|
|
"city": "Vancouver",
|
|
"state_province": "British Columbia",
|
|
"iso3166_2": "CA-BC",
|
|
"country": "Canada",
|
|
"iso3166_1": "CA",
|
|
"latitude": 49.2827,
|
|
"longitude": -123.1207,
|
|
"local_languages": ["en-CA"],
|
|
"postal_code": {
|
|
"country_format_regex": "^[ABCEGHJ-NPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z] ?\\d[ABCEGHJ-NPRSTV-Z]\\d$",
|
|
"city_regex": [
|
|
"^V[5-7][ABCEGHJ-NPRSTV-Z] ?[0-9][ABCEGHJ-NPRSTV-Z][0-9]$"
|
|
],
|
|
"examples": ["V6B 1A1", "V5K 0A1"],
|
|
"confidence": "medium",
|
|
"notes": "Vancouver proper = V5/V6; V7 covers North/West Vancouver and Richmond."
|
|
}
|
|
},
|
|
{
|
|
"city": "Montreal",
|
|
"state_province": "Quebec",
|
|
"iso3166_2": "CA-QC",
|
|
"country": "Canada",
|
|
"iso3166_1": "CA",
|
|
"latitude": 45.5017,
|
|
"longitude": -73.5673,
|
|
"local_languages": ["fr-CA", "en-CA"],
|
|
"postal_code": {
|
|
"country_format_regex": "^[ABCEGHJ-NPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z] ?\\d[ABCEGHJ-NPRSTV-Z]\\d$",
|
|
"city_regex": [
|
|
"^H[0-9][ABCEGHJ-NPRSTV-Z] ?[0-9][ABCEGHJ-NPRSTV-Z][0-9]$"
|
|
],
|
|
"examples": ["H3B 2Y7", "H2X 1Y4"],
|
|
"confidence": "high",
|
|
"notes": "Montreal = the entire 'H' forward sortation area."
|
|
}
|
|
},
|
|
{
|
|
"city": "Calgary",
|
|
"state_province": "Alberta",
|
|
"iso3166_2": "CA-AB",
|
|
"country": "Canada",
|
|
"iso3166_1": "CA",
|
|
"latitude": 51.0447,
|
|
"longitude": -114.0719,
|
|
"local_languages": ["en-CA"],
|
|
"postal_code": {
|
|
"country_format_regex": "^[ABCEGHJ-NPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z] ?\\d[ABCEGHJ-NPRSTV-Z]\\d$",
|
|
"city_regex": [
|
|
"^T[1-3][ABCEGHJ-NPRSTV-Z] ?[0-9][ABCEGHJ-NPRSTV-Z][0-9]$"
|
|
],
|
|
"examples": ["T2P 1J9", "T3A 0A1"],
|
|
"confidence": "medium",
|
|
"notes": "Calgary uses T1Y, T2A-T2Z and T3A-T3R; the T1/T3 blocks also include nearby communities."
|
|
}
|
|
},
|
|
{
|
|
"city": "Halifax",
|
|
"state_province": "Nova Scotia",
|
|
"iso3166_2": "CA-NS",
|
|
"country": "Canada",
|
|
"iso3166_1": "CA",
|
|
"latitude": 44.6488,
|
|
"longitude": -63.5752,
|
|
"local_languages": ["en-CA"],
|
|
"postal_code": {
|
|
"country_format_regex": "^[ABCEGHJ-NPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z] ?\\d[ABCEGHJ-NPRSTV-Z]\\d$",
|
|
"city_regex": ["^B3[ABCEGHJ-NPRSTV-Z] ?[0-9][ABCEGHJ-NPRSTV-Z][0-9]$"],
|
|
"examples": ["B3H 4R2", "B3J 1P3"],
|
|
"confidence": "medium",
|
|
"notes": "Halifax peninsula/urban = B3x. The wider municipality also uses B2x and B4x."
|
|
}
|
|
},
|
|
{
|
|
"city": "Mexico City",
|
|
"state_province": "Mexico City",
|
|
"iso3166_2": "MX-CMX",
|
|
"country": "Mexico",
|
|
"iso3166_1": "MX",
|
|
"latitude": 19.4326,
|
|
"longitude": -99.1332,
|
|
"local_languages": ["es-MX"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}$",
|
|
"city_regex": ["^(?:0[1-9]|1[0-6])[0-9]{3}$"],
|
|
"examples": ["01000", "16900"],
|
|
"confidence": "high",
|
|
"notes": "Mexico City = 01000-16999."
|
|
}
|
|
},
|
|
{
|
|
"city": "Tijuana",
|
|
"state_province": "Baja California",
|
|
"iso3166_2": "MX-BCN",
|
|
"country": "Mexico",
|
|
"iso3166_1": "MX",
|
|
"latitude": 32.5149,
|
|
"longitude": -117.0382,
|
|
"local_languages": ["es-MX"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}$",
|
|
"city_regex": ["^22[0-6][0-9]{2}$"],
|
|
"examples": ["22000", "22660"],
|
|
"confidence": "medium",
|
|
"notes": "Tijuana = 22000-22699."
|
|
}
|
|
},
|
|
{
|
|
"city": "Monterrey",
|
|
"state_province": "Nuevo León",
|
|
"iso3166_2": "MX-NLE",
|
|
"country": "Mexico",
|
|
"iso3166_1": "MX",
|
|
"latitude": 25.6866,
|
|
"longitude": -100.3161,
|
|
"local_languages": ["es-MX"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}$",
|
|
"city_regex": ["^64[0-9]{3}$"],
|
|
"examples": ["64000", "64988"],
|
|
"confidence": "medium",
|
|
"notes": "Monterrey city = 64000-64999; the metro area extends into 65xxx-67xxx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Guadalajara",
|
|
"state_province": "Jalisco",
|
|
"iso3166_2": "MX-JAL",
|
|
"country": "Mexico",
|
|
"iso3166_1": "MX",
|
|
"latitude": 20.6597,
|
|
"longitude": -103.3496,
|
|
"local_languages": ["es-MX"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}$",
|
|
"city_regex": ["^44[0-9]{3}$"],
|
|
"examples": ["44100", "44990"],
|
|
"confidence": "medium",
|
|
"notes": "Guadalajara city = 44100-44999; Zapopan/Tlaquepaque use 45xxx."
|
|
}
|
|
},
|
|
{
|
|
"city": "Ensenada",
|
|
"state_province": "Baja California",
|
|
"iso3166_2": "MX-BCN",
|
|
"country": "Mexico",
|
|
"iso3166_1": "MX",
|
|
"latitude": 31.8667,
|
|
"longitude": -116.5964,
|
|
"local_languages": ["es-MX"],
|
|
"postal_code": {
|
|
"country_format_regex": "^\\d{5}$",
|
|
"city_regex": ["^228[0-9]{2}$"],
|
|
"examples": ["22800", "22890"],
|
|
"confidence": "medium",
|
|
"notes": "Ensenada = 22800-22899."
|
|
}
|
|
}
|
|
]
|