raziyeh seyed yaghoubi
raziyeh seyed yaghoubi
خواندن ۲ دقیقه·۱۱ روز پیش

اعتبارسنجی شماره VIN خودرو با تایپ‌اسکریپت!

من یک تابع تایپ‌اسکریپت نوشته‌ام که به راحتی می‌تواند صحت VIN را بررسی کند.

تمامی حروف ورودی به صورت خودکار به حروف بزرگ تبدیل می‌شوند تا از هرگونه خطای کاربری جلوگیری شود.

کد کامل را می‌توانید در پروژه‌های تایپ‌اسکریپتی خود استفاده کنید.
اگر علاقه‌مند هستید، کد را اینجا با شما به اشتراک می‌گذارم: 👇

type ValidationResult = {
isValid: boolean;
errors: string[];
};
/**
* تابعی برای اعتبارسنجی شماره شناسایی خودرو (VIN) بر اساس قوانین مشخص.
*
* @param vin - VIN برای بررسی اعتبار.
* @returns یک شیء شامل مقدار بولی نشان‌دهنده اعتبار و لیستی از خطاها.
*/
function validateVIN(vin: string): ValidationResult {
const errors: string[] = [];
// تبدیل VIN به حروف بزرگ برای اطمینان از بررسی صحیح
vin = vin.toUpperCase();
// 1. بررسی طول VIN (باید 17 کاراکتر باشد)
if (vin.length !== 17) {
errors.push(&quotطول VIN باید دقیقاً 17 کاراکتر باشد.&quot);
}
// 2. بررسی حروف غیرمجاز (O, Q, I) به‌جز در بخش WMI (سه کاراکتر اول)
const disallowedCharacters = /[OQI]/;
const vinBody = vin.slice(3); // سه کاراکتر اول (WMI) از این بررسی حذف می‌شوند
if (disallowedCharacters.test(vinBody)) {
errors.push(&quotVIN شامل حروف غیرمجاز (O, Q یا I) در خارج از بخش WMI است.&quot);
}
// 3. بررسی اینکه VIN فقط شامل حروف مجاز (A-Z) و اعداد (0-9) باشد
const allowedCharacters = /^[A-Z0-9]+$/;
if (!allowedCharacters.test(vin)) {
errors.push(&quotVIN باید فقط شامل حروف (A-Z) و اعداد (0-9) باشد.&quot);
}
// 4. بررسی WMI (سه کاراکتر اول) برای کد کشور و تولیدکننده
const wmi = vin.slice(0, 3);
const validCountryCode = /^[A-Z]{2}[A-Z0-9]$/; // فرمت WMI: 2 حرف برای کشور + 1 حرف برای تولیدکننده
if (!validCountryCode.test(wmi)) {
errors.push(&quotWMI (سه کاراکتر اول) باید طبق استاندارد ISO 3780 معتبر باشد.&quot);
}
// 5. بررسی کاراکتر دهم (10) و اطمینان از اینکه نشان‌دهنده سال تولید معتبر است
const modelYearChar = vin.charAt(9); // موقعیت 10ام (اندیس 9) در VIN
const validModelYearChars = &quotABCDEFGHJKLMNPRSTVWXY123456789&quot // کاراکترهای معتبر برای سال تولید
if (!validModelYearChars.includes(modelYearChar)) {
errors.push(&quotکاراکتر دهم VIN باید نشان‌دهنده سال تولید معتبر باشد.&quot);
}
// 6. عدم بررسی رقم چک (کاراکتر 9) طبق درخواست کاربر
// 7. بازگرداندن نتیجه اعتبارسنجی
return {
isValid: errors.length === 0,
errors
};
}
// نمونه استفاده از تابع
const vinExample = &quotIRPC961V3JW004833&quot
const result = validateVIN(vinExample);
if (result.isValid) {
console.log(&quotVIN معتبر است.&quot);
} else {
console.log(&quotVIN نامعتبر است. خطاها:&quot, result.errors);
}
export { validateVIN };

اگر سوالی دارید در کامنت ها بپرسید.

تایپ اسکریپت
شاید از این پست‌ها خوشتان بیاید