영국 우편번호 확인 및 구문 분석
우편번호 모양 확인, 우편번호 요소(인코드, 아웃코드, 지역 등) 추출을 포함한 영국 우편번호용 유틸리티 방법.
ONSPD에서 약 170만 개의 우편번호에 대해 테스트되었습니다.
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 컴파일러는 valid
속성을 확인하여 parse
에서 유효한 우편번호 유형이 있는지 추론할 수 있습니다.
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 ) ;
}
우편번호 | .아웃코드 | .인코드 | .영역 | .구역 | .subDistrict | .부문 | .단위 |
---|---|---|---|---|---|---|---|
AA9A 9AA | AA9A | 9AA | AA | AA9 | AA9A | AA9A 9 | AA |
A9A 9AA | A9A | 9AA | 에이 | A9 | A9A | A9A 9 | AA |
A9 9AA | A9 | 9AA | 에이 | A9 | null | A9 9 | AA |
A99 9AA | A99 | 9AA | 에이 | A99 | null | A99 9 | AA |
AA9 9AA | AA9 | 9AA | AA | AA9 | null | AA9 9 | AA |
AA99 9AA | AA99 | 9AA | AA | AA99 | null | AA99 9 | AA |
단일 값 바로 뒤에 있는 경우 단일 메서드를 가져올 수 있습니다.
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
이제 ES 모듈 빌드를 내보냅니다.match
문자열을 받아들이고 유효한 우편번호를 모두 반환합니다.replace
문자열을 허용하고 유효한 우편번호를 선택적인 두 번째 인수로 바꿉니다. 기본 대체 텍스트는 빈 문자열 ""
입니다. 우편번호 구성요소 용어집은 우편번호 형식 가이드를 참조하세요.
우편번호는 정규 표현식만으로는 확인할 수 없습니다(아무리 복잡하더라도). 진정한 우편번호 확인을 위해서는 확인할 우편번호 전체 목록이 필요합니다. 정규식에 의존하면 거짓 긍정/부정이 생성됩니다.
우편번호 확인과 관련된 접근 방식 및 장단점에 대한 개요는 우편번호 확인 가이드를 참조하세요.
npm test
MIT
병기 조사 데이터 포함 © Crown 저작권 및 데이터베이스 권리