International Address Formats
Every country has its own address conventions. Building global applications requires understanding these differences.
Address Ordering Patterns
Western (Street First)
Used in US, UK, Canada, Australia:
1123 Main Street2New York, NY 100013USA
European (Postal Before City)
Used in Germany, France, Netherlands:
1Friedrichstraße 123210117 Berlin3Germany
Asian (Large to Small)
Used in Japan, China, Korea:
1〒150-00412東京都渋谷区神南1-2-33Japan
Country Format Reference
Japan (JP)
1〒150-00412東京都渋谷区神南1丁目2番3号3ABCビル 5階
Order: Postal Code → Prefecture → City → District → Block → Building
| Component | Example |
|---|---|
| 〒 (postal mark) | Indicates postal code |
| Prefecture | 東京都 (Tokyo-to) |
| City/Ward | 渋谷区 (Shibuya-ku) |
| District | 神南 (Jinnan) |
| Block | 1丁目2番3号 |
Brazil (BR)
1Av. Paulista, 10002Bela Vista3São Paulo - SP401310-1005Brazil
Format: Street, Number, Neighborhood, City - State, CEP
CEP: 8 digits, XXXXX-XXX
China (CN)
1中国2北京市3朝阳区4建国门外大街1号5100020
Order: Country → Province → City → District → Street → Postal
South Korea (KR)
1(06236)2서울특별시 강남구 테헤란로 1523강남파이낸스센터
Order: Postal → City → District → Road → Building
Australia (AU)
1123 Collins Street2Melbourne VIC 30003Australia
Postal Code: 4 digits States: NSW, VIC, QLD, SA, WA, TAS, NT, ACT
Parsing Strategies by Region
Country Detection
javascript1function detectCountryFromFormat(address) {2 // Japanese postal mark3 if (/〒?\d{3}-?\d{4}/.test(address)) return 'JP';45 // Brazilian CEP6 if (/\d{5}-\d{3}/.test(address)) return 'BR';78 // UK postcode at end9 if (/[A-Z]{1,2}\d[A-Z\d]?\s?\d[A-Z]{2}\s*$/i.test(address)) return 'GB';1011 // German/French PLZ before city12 if (/,\s*\d{5}\s+[A-Za-zäöüÄÖÜß]/.test(address)) return 'DE';1314 // Default to US15 return 'US';16}
Script Detection
javascript1function detectScript(text) {2 if (/[\u3040-\u309F\u30A0-\u30FF]/.test(text)) return 'japanese';3 if (/[\u4E00-\u9FFF]/.test(text)) return 'chinese';4 if (/[\uAC00-\uD7AF]/.test(text)) return 'korean';5 if (/[\u0400-\u04FF]/.test(text)) return 'cyrillic';6 if (/[\u0600-\u06FF]/.test(text)) return 'arabic';7 return 'latin';8}
Best Practices
- Don't assume US format - Support international from day one
- Store original script - Keep addresses in native characters
- Add transliteration - Latin version for shipping labels
- Validate by country - Apply country-specific rules
- Handle missing components - Not all countries use states