ตรวจสอบและแยกรหัสไปรษณีย์ของสหราชอาณาจักร
วิธีการอรรถประโยชน์สำหรับรหัสไปรษณีย์ของสหราชอาณาจักร รวมถึงการตรวจสอบรูปร่างของรหัสไปรษณีย์ การแยกองค์ประกอบรหัสไปรษณีย์ (เช่น รหัส รหัสออก พื้นที่ และอื่นๆ)
ทดสอบกับรหัสไปรษณีย์ประมาณ 1.7 ล้านรหัสบน ONSPD
npm install postcode
import { isValid } from "postcode" ;
isValid ( "AA1 1AB" ) ; // => true
ส่งสตริงเพื่อ parse
สิ่งนี้จะส่งคืนอินสแตนซ์รหัสไปรษณีย์ที่ถูกต้องหรือไม่ถูกต้องซึ่งสามารถทำลายโครงสร้างได้ง่าย
คำจำกัดความประเภท 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" ) ;
คำจำกัดความประเภท InvalidPostcode
const {
postcode , // => null
outcode , // => null
incode , // => null
area , // => null
district , // => null
unit , // => null
sector , // => null
subDistrict , // => null
valid , // => false
} = parse ( " Oh no, ): " ) ;
คอมไพเลอร์ TypeScript สามารถสรุปได้ว่าคุณมีประเภทรหัสไปรษณีย์ที่ถูกต้องจาก parse
โดยการตรวจสอบแอตทริบิวต์ 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 ) ;
}
รหัสไปรษณีย์ | .outcode | .incode | .พื้นที่ | .เขต | .ตำบล | .ภาค | .หน่วย |
---|---|---|---|---|---|---|---|
AA9A9AA | AA9A | 9เอเอ | เอเอ | AA9 | AA9A | AA9A 9 | เอเอ |
A9A 9AA | เอ9เอ | 9เอเอ | ก | A9 | เอ9เอ | เอ9เอ 9 | เอเอ |
A9 9AA | A9 | 9เอเอ | ก | A9 | null | เอ99 | เอเอ |
A99 9AA | A99 | 9เอเอ | ก | A99 | null | เอ999 | เอเอ |
AA9 9AA | AA9 | 9เอเอ | เอเอ | AA9 | null | เอเอ9 9 | เอเอ |
AA999AA | AA99 | 9เอเอ | เอเอ | AA99 | null | AA999 | เอเอ |
หากคุณต้องการเพียงค่าเดียว คุณสามารถนำเข้าวิธีการเดียวได้
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
ความพยายามที่จะแก้ไขและล้างรหัสไปรษณีย์โดยไม่ตรวจสอบความถูกต้องโดยการแทนที่อักขระที่วางผิดที่โดยทั่วไป (เช่น ผสม 0
และ "O"
, 1
และ "I"
) วิธีนี้จะเป็นตัวพิมพ์ใหญ่และแก้ไขระยะห่างด้วย อินพุตดั้งเดิมจะถูกส่งกลับหากไม่สามารถแก้ไขได้อย่างน่าเชื่อถือ
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
มุ่งหวังที่จะใช้ร่วมกับการแยกวิเคราะห์เพื่อทำให้การป้อนรหัสไปรษณีย์ให้อภัยมากขึ้น:
const { inward } = parse ( fix ( "SW1A 2A0" ) ) ; // inward = "2AO"
หากอินพุตไม่ถือว่าสามารถแก้ไขได้ สตริงต้นฉบับจะถูกส่งกลับ
fix ( "12a" ) = > "12a"
match
. รับรหัสไปรษณีย์ที่ถูกต้องในรูปแบบข้อความ
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
. แทนที่รหัสไปรษณีย์ในเนื้อหาข้อความ โดยส่งคืนคลังข้อมูลที่อัปเดตและรหัสไปรษณีย์ที่ตรงกัน
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 นำเสนอการเปลี่ยนแปลงซึ่งช่วยให้การเขย่าต้นไม้และการทำงานร่วมกันกับโมดูล ES ดีขึ้น นอกจากนี้ยังเลิกใช้ API ที่ใช้คลาสเดิมและใช้วิธีที่มีจุดประสงค์เดียว
postcode
ไม่ส่งออกชั้นเรียนอีกต่อไป ฟังก์ชัน new Postcode()
แบบเดิมถูกลบออกแล้ว วิธีการที่แนบมากับ Postcode
มีให้ใช้งานทั้งหมดในรูปแบบการส่งออกที่มีชื่อpostcode
ไม่ใช้การส่งออกเริ่มต้นอีกต่อไป การส่งออกทั้งหมดมีชื่อ เช่น // In <= 4.0.0
import Postcode from "postcode" ;
Postcode . parse ( "SW1A 2AA" ) ;
// In >= 5.0.0
import { parse } from "postcode" ;
parse ( "SW1A 2AA" ) ;
ในหลายกรณี การโยกย้ายสามารถทำได้โดยการเปลี่ยน import Postcode from "postcode"
เป็น import * as Postcode from "postcode"
อย่างไรก็ตาม วิธีนี้ทำให้ได้เปรียบในการเปลี่ยนโครงสร้างต้นไม้
postcode
ตอนนี้ส่งออกการสร้างโมดูล ESmatch
ยอมรับสตริงและส่งกลับรหัสไปรษณีย์ที่ถูกต้องทั้งหมดreplace
ยอมรับสตริงและแทนที่รหัสไปรษณีย์ที่ถูกต้องด้วยอาร์กิวเมนต์ที่สองที่เป็นทางเลือก ข้อความแทนที่เริ่มต้นคือสตริงว่าง ""
ดูคู่มือรูปแบบรหัสไปรษณีย์สำหรับอภิธานศัพท์ของคำศัพท์ส่วนประกอบรหัสไปรษณีย์
รหัสไปรษณีย์ไม่สามารถตรวจสอบได้ด้วยนิพจน์ทั่วไปเท่านั้น (แม้ว่าจะซับซ้อนก็ตาม) การตรวจสอบความถูกต้องของรหัสไปรษณีย์ที่แท้จริงจำเป็นต้องมีรายการรหัสไปรษณีย์ทั้งหมดเพื่อตรวจสอบ การใช้ regex จะทำให้เกิดผลเชิงบวก/เชิงลบที่ผิดพลาด
ดูคู่มือการตรวจสอบรหัสไปรษณีย์สำหรับภาพรวมของแนวทางและข้อดีที่เกี่ยวข้องกับการตรวจสอบรหัสไปรษณีย์
npm test
เอ็มไอที
มีข้อมูลการสำรวจอาวุธยุทโธปกรณ์ © Crown Copyright & Database Right