Validasi & parsing kode pos Inggris
Metode utilitas untuk Kode Pos Inggris, termasuk memvalidasi bentuk kode pos, mengekstraksi elemen kode pos (seperti kode masuk, kode keluar, area, dan lainnya).
Diuji terhadap ~1,7 juta kode pos di ONSPD.
npm install postcode
import { isValid } from "postcode" ;
isValid ( "AA1 1AB" ) ; // => true
Berikan string untuk parse
. Ini akan mengembalikan contoh kode pos yang valid atau tidak valid yang dapat dengan mudah dirusak.
Definisi jenis ValidPostcode
import { parse } from "postcode" ;
const {
postcode , // => "SW1A 2AA"
outcode , // => "SW1A"
incode , // => "2AA"
area , // => "SW"
district , // => "SW1"
unit , // => "AA"
sector , // => "SW1A 2"
subDistrict , // => "SW1A"
valid , // => true
} = parse ( "Sw1A 2aa" ) ;
Definisi jenis InvalidPostcode
const {
postcode , // => null
outcode , // => null
incode , // => null
area , // => null
district , // => null
unit , // => null
sector , // => null
subDistrict , // => null
valid , // => false
} = parse ( " Oh no, ): " ) ;
Kompiler TypeScript dapat menyimpulkan apakah Anda memiliki jenis kode pos yang valid dari parse
dengan memeriksa atribut valid
import { parse } from "postcode" ;
const postcode = parse ( "SW1A 2AA" ) ;
if ( postcode . valid ) {
// `postcode` adheres to the `ValidPostcode` interface
processString ( postcode . outcode . toLowerCase ( ) ) ; // TypeScript compiler knows `outcode` to be a string
processString ( postcode . subDistrict . toLowerCase ( ) ) ; // And it will throw errors on common gotchas (e.g. subdistrict can be `null` on a valid postcode)
} else {
// `postcode` adheres to the `InvalidPostcode` interface
processInvalidPostcode ( postcode ) ;
}
Kode pos | .kode keluar | .incode | .daerah | .daerah | .kecamatan | .sektor | .satuan |
---|---|---|---|---|---|---|---|
AA9A 9AA | AA9A | 9AA | A A | AA9 | AA9A | AA9A 9 | A A |
A9A 9AA | A9A | 9AA | A | A9 | A9A | A9A 9 | A A |
A9 9AA | A9 | 9AA | A | A9 | null | A9 9 | A A |
A99 9AA | A99 | 9AA | A | A99 | null | A99 9 | A A |
AA9 9AA | AA9 | 9AA | A A | AA9 | null | AA9 9 | A A |
AA99 9AA | AA99 | 9AA | A A | AA99 | null | AA99 9 | A A |
Jika Anda hanya menginginkan satu nilai, Anda dapat mengimpor satu metode.
isValid ( "Sw1A 2aa" ) ; // => true
import {
toNormalised ,
toOutcode ,
toIncode ,
toArea ,
toDistrict ,
toSubDistrict ,
toSector ,
toUnit ,
} from "postcode" ;
toNormalised ( "Sw1A 2aa" ) ; // => "SW1A 2AA"
toOutcode ( "Sw1A 2aa" ) ; // => "SW1A"
toIncode ( "Sw1A 2aa" ) ; // => "2AA"
toArea ( "Sw1A 2aa" ) ; // => "SW"
toDistrict ( "Sw1A 2aa" ) ; // => "SW1"
toSubDistrict ( "Sw1A 2aa" ) ; // => "SW1A"
toSector ( "Sw1A 2aa" ) ; // => "SW1A 2"
toUnit ( "Sw1A 2aa" ) ; // => "AA"
fix
Upaya untuk memperbaiki dan membersihkan kode pos tanpa memvalidasi dengan mengganti karakter yang sering salah tempat (misalnya mencampurkan 0
dan "O"
, 1
dan "I"
). Metode ini juga akan menggunakan huruf besar dan memperbaiki spasi. Masukan asli dikembalikan jika tidak dapat diperbaiki dengan andal.
fix ( "SWIA 2AA" ) = > "SW1A 2AA" // Corrects I to 1
fix ( "SW1A 21A" ) = > "SW1A 2IA" // Corrects 1 to I
fix ( "SW1A OAA" ) = > "SW1A 0AA" // Corrects O to 0
fix ( "SW1A 20A" ) = > "SW1A 2OA" // Corrects 0 to O
// Other effects
fix ( " SW1A 2AO" ) = > "SW1A 2AO" // Properly spaces
fix ( "sw1a 2aa" ) = > "SW1A 2AA" // Uppercase
Bertujuan untuk digunakan bersama dengan parse untuk membuat entri kode pos lebih mudah ditoleransi:
const { inward } = parse ( fix ( "SW1A 2A0" ) ) ; // inward = "2AO"
Jika masukan dianggap tidak dapat diperbaiki, string asli akan dikembalikan
fix ( "12a" ) = > "12a"
match
. Ambil kode pos yang valid di badan teks
const matches = match ( "The PM and her no.2 live at SW1A2aa and SW1A 2AB" ) ; // => ["SW1A2aa", "SW1A 2AB"]
// Perform transformations like normalisation using `.map` and `toNormalised`
matches . map ( toNormalised ) ; // => ["SW1A 2AA", "SW1A 2AB"]
matches . map ( toOutcode ) ; // => ["SW1A", "SW1A"]
// No matches yields empty array
match ( "Some London outward codes are SW1A, NW1 and E1" ) ; // => []
replace
. Ganti kode pos di badan teks, kembalikan korpus yang diperbarui dan kode pos apa pun yang cocok
const { match , result } = replace ( "The PM and her no.2 live at SW1A2AA and SW1A 2AB" ) ;
// => match: ["SW1A2AA", "SW1A 2AB"]
// => result: "The PM and her no.2 live at and "
// Add custom replacement
replace ( "The PM lives at SW1A 2AA" , "Downing Street" ) ;
// => { match: ["SW1A 2AA"], result: "The PM lives at Downing Street" };
// No match
replace ( "Some London outward codes are SW1A, NW1 and E1" ) ;
// => { match: [], result: "Some London outward codes are SW1A, NW1 and E1" }
5.0.0 menghadirkan perubahan yang memungkinkan perombakan pohon dan interopabilitas yang lebih baik dengan Modul ES. Ini juga tidak lagi menggunakan API berbasis kelas lama dan mendukung metode tujuan tunggal.
postcode
tidak lagi mengekspor kelas. Fungsionalitas new Postcode()
lama telah dihapus. Metode yang dilampirkan pada Postcode
semuanya tersedia sebagai ekspor bernama.postcode
tidak lagi menggunakan ekspor default. Semua ekspor diberi nama. Misalnya // In <= 4.0.0
import Postcode from "postcode" ;
Postcode . parse ( "SW1A 2AA" ) ;
// In >= 5.0.0
import { parse } from "postcode" ;
parse ( "SW1A 2AA" ) ;
Dalam banyak kasus, migrasi dapat dilakukan dengan mengubah import Postcode from "postcode"
menjadi import * as Postcode from "postcode"
, namun hal ini menghilangkan keuntungan dari treeshaking.
postcode
sekarang mengekspor build Modul ESmatch
menerima string dan mengembalikan semua kode pos yang validreplace
menerima string dan mengganti kode pos yang valid dengan argumen opsional kedua. Teks pengganti default adalah string kosong ""
Lihat panduan format kode pos untuk daftar istilah komponen kode pos.
Kode pos tidak dapat divalidasi hanya dengan ekspresi reguler (betapapun rumitnya). Validasi kode pos yang sebenarnya memerlukan daftar lengkap kode pos untuk diperiksa. Mengandalkan regex akan menghasilkan positif/negatif palsu.
Lihat panduan validasi kode pos untuk ikhtisar pendekatan dan pengorbanan yang terkait dengan validasi kode pos.
npm test
MIT
Berisi Data Survei Persenjataan © Hak Cipta Mahkota & Hak Basis Data