التحقق من صحة وتحليل الرموز البريدية في المملكة المتحدة
طرق المساعدة للرموز البريدية في المملكة المتحدة، بما في ذلك التحقق من صحة شكل الرمز البريدي، واستخراج عناصر الرمز البريدي (مثل الرموز الداخلية والرموز الخارجية والمناطق والمزيد).
تم اختباره مقابل ما يقرب من 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 | .منطقة | .يصرف | .subDistrict | .قطاع | .وحدة |
---|---|---|---|---|---|---|---|
AA9A 9AA | AA9A | 9AA | أأ | AA9 | AA9A | AA9A9 | أأ |
A9A 9AA | A9A | 9AA | أ | أ9 | A9A | أ9أ9 | أأ |
A9 9AA | أ9 | 9AA | أ | أ9 | null | أ9 9 | أأ |
A99 9AA | أ99 | 9AA | أ | أ99 | null | أ99 9 | أأ |
AA9 9AA | AA9 | 9AA | أأ | AA9 | null | أأ9 9 | أأ |
AA99 9AA | AA99 | 9AA | أأ | AA99 | null | أ99 9 | أأ |
إذا كنت تسعى للحصول على قيمة واحدة فقط، فيمكنك استيراد طريقة واحدة.
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. كما أنه يتجاهل واجهات برمجة التطبيقات المستندة إلى الفئة القديمة لصالح أساليب الغرض الواحد.
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
يقبل سلسلة ويستبدل الرموز البريدية الصالحة بالوسيطة الثانية الاختيارية. النص البديل الافتراضي هو سلسلة فارغة ""
راجع دليل تنسيق الرمز البريدي للحصول على مسرد مصطلحات مكونات الرمز البريدي.
لا يمكن التحقق من صحة الرموز البريدية فقط باستخدام التعبير العادي (مهما كان معقدًا). يتطلب التحقق من صحة الرمز البريدي الحقيقي وجود قائمة كاملة بالرموز البريدية للتحقق منها. سيؤدي الاعتماد على التعبير العادي إلى ظهور إيجابيات/سلبيات كاذبة.
راجع دليل التحقق من صحة الرمز البريدي للحصول على نظرة عامة على الأساليب والمقايضات المرتبطة بالتحقق من صحة الرمز البريدي.
npm test
معهد ماساتشوستس للتكنولوجيا
يحتوي على بيانات مسح الذخائر © حقوق الطبع والنشر لقاعدة البيانات وقاعدة البيانات