Saya mencari kode pos utama dan kode pos. Saya mencari sesuatu yang akan mencakup sebagian besar (semoga semua) dunia.
regex
zipcode
postal-code
Darryl Hein
sumber
sumber
Jawaban:
Tidak ada.
Kode pos / pos di seluruh dunia tidak mengikuti pola umum. Di beberapa negara mereka dibuat oleh angka, di negara lain mereka dapat kombinasi angka dan huruf, beberapa dapat berisi spasi, titik lainnya, jumlah karakter dapat bervariasi dari dua hingga setidaknya enam ...
Apa yang bisa Anda lakukan (secara teoritis) adalah membuat regex terpisah untuk setiap negara di dunia, bukan IMO yang direkomendasikan. Tetapi Anda masih akan hilang pada bagian validasi: Kode pos
12345
mungkin ada, tetapi12346
tidak, mungkin12344
juga tidak ada. Bagaimana Anda memeriksanya dengan regex?Kamu tidak bisa
sumber
^\d{5}(?:[-\s]\d{4})?$
Unicode CLDR berisi regex kode pos untuk setiap negara. (Total 158 regex!)
core.zip
dari http://unicode.org/Public/cldr/26.0.1/common/supplemental/postalCodeData.xml
dari konten yang tidak di- zip (konten langsung: common / supplemental / postalCodeData.xml )Google juga memiliki layanan web dengan informasi pemformatan alamat per negara, termasuk kode pos, di sini - http://i18napis.appspot.com/address (saya menemukan tautan itu melalui http://unicode.org/review/pri180/ )
Edit
Berikut salinan regex postalCodeData.xml :
sumber
gunakan regx ini
sumber
Setiap sistem kode pos hanya menggunakan AZ dan / atau 0-9 dan terkadang spasi / tanda hubung
Tidak setiap negara menggunakan kode pos (mis. Irlandia di luar Dublin), tetapi kami akan mengabaikannya di sini.
Format kode pos terpendek adalah Sierra Leone dengan
NN
Yang terpanjang adalah Samoa Amerika
NNNNN-NNNNNN
Anda harus mengizinkan satu spasi atau tanda hubung.
Seharusnya tidak dimulai atau diakhiri dengan spasi atau tanda hubung
Ini harus mencakup yang di atas:
sumber
Mencoba untuk menutupi seluruh dunia dengan satu ekspresi reguler tidak sepenuhnya mungkin, dan tentu saja tidak layak atau direkomendasikan.
Bukan untuk membunyikan klakson saya sendiri, tetapi saya telah menulis beberapa ekspresi reguler yang cukup menyeluruh yang mungkin berguna bagi Anda.
Kode pos Kanada
Kode ZIP AS
Kode pos UK
Tidak mungkin untuk menjamin keakuratan tanpa benar-benar mengirimkan sesuatu ke alamat dan meminta orang tersebut memberi tahu Anda ketika mereka menerimanya, tetapi kami dapat mempersempit hal-hal dengan mengurangi kasus-kasus yang kami tahu buruk.
sumber
Ini terlihat seperti referensi yang baik meskipun tidak di Regex.
Sungguh, kecuali Anda benar-benar mengirimkan sesuatu kepada pengguna Anda, saya tidak berpikir itu sepadan dengan usaha. Dan jika Anda sedang pengiriman itu, ada alamat membersihkan alat / jasa Anda dapat melihat ke dalam untuk membuatnya cara yang lebih mudah pada diri Anda sendiri.
sumber
Kami menggunakan yang berikut ini:
Kanada
Amerika
Lain
sumber
Tergantung pada aplikasi Anda, Anda mungkin ingin menerapkan pencocokan regex untuk negara-negara di mana sebagian besar pengunjung Anda berasal dan tidak ada validasi untuk sisanya (menerima apa pun).
sumber
Lompatan Besar lupa tentang jeda baris, kosong, dan karakter kontrol.
Kode pos internasional adalah semacam masalah penghentian.
sumber
Harap dicatat bahwa ini adalah masalah yang cukup sulit, sebagaimana dinyatakan oleh jawaban yang diterima. Saya kira itu tidak menghalangi orang-orang di geonames.org . Mereka memiliki file file info negara , yang tidak cocok sepenuhnya ke dalam jawaban ini - batasnya pada 30000 karakter tampaknya. Ada regex untuk sekitar 150 negara.
Saya mengekstrak bit yang relevan dengan pertanyaan ini di sini:
Semoga saya tidak melakukan kesalahan, regex-fu saya cukup lemah.
sumber
Jika seseorang masih tertarik dengan cara memvalidasi kode pos, saya sudah menemukan solusinya:
Dengan menggunakan
Google Geocoding API
kita dapat memeriksa validitas kode ZIP yang memiliki kode Negara dan kode ZIP itu sendiri.Misalnya saya tinggal di Ukraina sehingga saya dapat memeriksa seperti ini: https://maps.googleapis.com/maps/api/geocode/json?components=postal_code:80380|country:UA
Atau menggunakan JS API: https://developers.google.com/maps/documentation/javascript/geocoding#ComponentFiltering
Di mana
80380
ZIP yang valid untuk Ukraina, sebenarnya setiap (#####) valid.Google mengembalikan
ZERO_RESULTS
status jika tidak ada yang ditemukan. AtauOK
dan hasilnya jika keduanya benar.Semoga ini bisa membantu.
sumber
Seperti orang lain tunjukkan, satu regex untuk memerintah mereka semua tidak mungkin. Namun, Anda dapat membuat ekspresi reguler untuk sebanyak mungkin negara yang Anda perlukan menggunakan info pemformatan alamat dari Universal Postal Union - agen PBB yang kurang dikenal.
Misalnya, berikut adalah aturan pemformatan alamat, termasuk kode pos, untuk beberapa negara (format PDF):
sumber
Masalahnya adalah bahwa Anda mungkin tidak memiliki sarana yang baik untuk mengikuti perubahan persyaratan kode pos negara-negara di sisi lain dunia dan Anda tidak memiliki bahasa yang sama. Kecuali Anda memiliki anggaran yang cukup besar untuk melacak ini, Anda hampir pasti lebih baik memberikan tanggung jawab untuk memvalidasi alamat ke google atau yahoo.
Kedua perusahaan menyediakan fasilitas pencarian alamat melalui API yang dapat diprogram.
sumber
Mengapa Anda melakukan ini dan mengapa Anda peduli? Seperti yang ditunjukkan oleh Tom Ritter, tidak masalah apakah Anda memiliki kode pos / ZIP sama sekali, apalagi apakah itu valid atau tidak, sampai dan kecuali Anda benar-benar akan mengirim sesuatu ke alamat itu. Bahkan jika Anda berharap bahwa Anda akan mengirim sesuatu kepada mereka suatu hari nanti , itu tidak berarti Anda memerlukan kode pos hari ini .
sumber
Sebagaimana dicatat di tempat lain, variasi di seluruh dunia sangat besar. Dan bahkan jika sesuatu yang cocok dengan polanya tidak berarti itu ada.
Kemudian, tentu saja, ada banyak tempat di mana kode pos tidak digunakan (misalnya banyak atau Irlandia).
sumber
Ada alasan di luar pengiriman karena memiliki kode pos yang akurat. Agen perjalanan yang melakukan tur yang melintasi perbatasan (kecuali Zona Euro tentu saja) memerlukan informasi ini sebelumnya untuk diberikan kepada pihak berwenang. Seringkali informasi ini dimasukkan oleh agen yang mungkin atau mungkin tidak terbiasa dengan hal-hal seperti itu. Setiap metode yang dapat mengurangi kesalahan adalah Good Idea ™
Namun, menulis sebuah regex yang akan mencakup semua kode pos di dunia akan menjadi gila.
sumber
Mengingat bahwa ada begitu banyak kasus tepi untuk masing-masing negara (mis. Alamat London dapat menggunakan format yang sedikit berbeda dengan bagian lain di Inggris) Saya tidak berpikir bahwa ada regex utama selain mungkin:
Lebih baik menggunakan pola yang cukup luas (juga tidak seluas seperti di atas), atau perlakukan setiap negara / wilayah dengan pola spesifiknya sendiri!
PEMBARUAN: Namun, dimungkinkan untuk secara dinamis membangun regex berdasarkan banyak aturan spesifik kawasan yang lebih kecil - meskipun tidak yakin tentang kinerja!
Banyak pola spesifik negara dapat ditemukan di situs RegExLib .
sumber
Seseorang bertanya tentang daftar pemformatan alamat surat, dan saya pikir inilah yang dia cari ...
Panduan Kompulsif Frank untuk Alamat Pos: http://www.columbia.edu/~fdc/postal/ Tidak banyak membantu dengan masalah tingkat jalanan.
Pekerjaan saya menggunakan beberapa alat untuk membantu dengan ini: - Layanan Lexis-Nexis, termasuk pencarian NCOA (Anda akan mendapatkan standardisasi alamat untuk "gratis") - "Melissa Data" http://www.melissadata.com
sumber
Ini adalah RegEx yang sangat sederhana untuk memvalidasi Kode Pos AS (bukan Kode Pos Plus Empat):
Tampaknya semua angka lima digit adalah kode pos yang valid kecuali
00000
,88888
&99999
.Saya telah menguji RegEx ini dengan http://regexpal.com/
SP
sumber
Jika
Zip Code
memungkinkan karakter dan digit (alfanumerik), regex di bawah ini akan digunakan di tempat yang cocok, 5 atau 9 atau 10 karakter alfanumerik dengan satu hypen (-
):sumber