Valider et analyser les codes postaux du Royaume-Uni
Méthodes utilitaires pour les codes postaux britanniques, notamment la validation de la forme d'un code postal, l'extraction d'éléments de code postal (comme les codes d'entrée, les codes de sortie, les zones et plus encore).
Testé sur environ 1,7 million de codes postaux sur l'ONSPD.
npm install postcode
import { isValid } from "postcode" ;
isValid ( "AA1 1AB" ) ; // => true
Passez une chaîne à parse
. Cela renverra une instance de code postal valide ou invalide qui peut être facilement déstructurée.
Définition du type 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" ) ;
Définition du type de InvalidPostcode
const {
postcode , // => null
outcode , // => null
incode , // => null
area , // => null
district , // => null
unit , // => null
sector , // => null
subDistrict , // => null
valid , // => false
} = parse ( " Oh no, ): " ) ;
Le compilateur TypeScript peut déduire si vous avez un type de code postal valide à partir de parse
en vérifiant l'attribut 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 ) ;
}
Code postal | .code de sortie | .incode | .zone | .district | .sous-district | .secteur | .unité |
---|---|---|---|---|---|---|---|
AA9A9AA | AA9A | 9AA | AA | AA9 | AA9A | AA9A9 | AA |
A9A9AA | A9A | 9AA | UN | A9 | A9A | A9A9 | AA |
A9 9AA | A9 | 9AA | UN | A9 | null | A9 9 | AA |
A99 9AA | A99 | 9AA | UN | 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 |
Si vous recherchez juste une seule valeur, vous pouvez importer une seule méthode.
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
Tentatives de correction et de nettoyage d'un code postal sans validation en remplaçant les caractères fréquemment mal placés (par exemple en mélangeant 0
et "O"
, 1
et "I"
). Cette méthode mettra également en majuscules et corrigera l’espacement. L'entrée d'origine est renvoyée si elle ne peut pas être corrigée de manière fiable.
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
Vise à être utilisé conjointement avec parse pour rendre la saisie du code postal plus indulgente :
const { inward } = parse ( fix ( "SW1A 2A0" ) ) ; // inward = "2AO"
Si l'entrée n'est pas jugée réparable, la chaîne d'origine sera renvoyée
fix ( "12a" ) = > "12a"
match
. Récupérer des codes postaux valides dans un corps de texte
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
. Remplacez les codes postaux dans un corps de texte, renvoyant le corpus mis à jour et tous les codes postaux correspondants
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" }
La version 5.0.0 apporte des modifications qui permettent une meilleure arborescence et une meilleure interopérabilité avec les modules ES. Il abandonne également les anciennes API basées sur les classes au profit de méthodes à usage unique.
postcode
n'exporte plus de classe. new Postcode()
a été supprimée. Les méthodes attachées au Postcode
sont toutes disponibles sous forme d’exportations nommées.postcode
n'utilise plus les exportations par défaut. Toutes les exportations sont nommées. Par exemple // In <= 4.0.0
import Postcode from "postcode" ;
Postcode . parse ( "SW1A 2AA" ) ;
// In >= 5.0.0
import { parse } from "postcode" ;
parse ( "SW1A 2AA" ) ;
Dans de nombreux cas, la migration peut être réalisée en remplaçant import Postcode from "postcode"
par import * as Postcode from "postcode"
, mais cela abandonne les avantages de l'arborescence.
postcode
exporte désormais une version du module ESmatch
accepte une chaîne et renvoie tous les codes postaux validesreplace
accepte une chaîne et remplace les codes postaux valides par un deuxième argument facultatif. Le texte de remplacement par défaut est une chaîne vide ""
Consultez le guide du format du code postal pour un glossaire des termes des composants du code postal.
Les codes postaux ne peuvent pas être validés simplement avec une expression régulière (aussi complexe soit-elle). La véritable validation du code postal nécessite de disposer d'une liste complète de codes postaux à vérifier. S'appuyer sur une expression régulière produira de faux positifs/négatifs.
Consultez le guide de validation du code postal pour un aperçu des approches et des compromis associés à la validation du code postal.
npm test
MIT
Contient des données de l'Ordnance Survey © Crown Copyright & Database Right