من یک تابع تایپاسکریپت نوشتهام که به راحتی میتواند صحت 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("طول VIN باید دقیقاً 17 کاراکتر باشد.");
}
// 2. بررسی حروف غیرمجاز (O, Q, I) بهجز در بخش WMI (سه کاراکتر اول)
const disallowedCharacters = /[OQI]/;
const vinBody = vin.slice(3); // سه کاراکتر اول (WMI) از این بررسی حذف میشوند
if (disallowedCharacters.test(vinBody)) {
errors.push("VIN شامل حروف غیرمجاز (O, Q یا I) در خارج از بخش WMI است.");
}
// 3. بررسی اینکه VIN فقط شامل حروف مجاز (A-Z) و اعداد (0-9) باشد
const allowedCharacters = /^[A-Z0-9]+$/;
if (!allowedCharacters.test(vin)) {
errors.push("VIN باید فقط شامل حروف (A-Z) و اعداد (0-9) باشد.");
}
// 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("WMI (سه کاراکتر اول) باید طبق استاندارد ISO 3780 معتبر باشد.");
}
// 5. بررسی کاراکتر دهم (10) و اطمینان از اینکه نشاندهنده سال تولید معتبر است
const modelYearChar = vin.charAt(9); // موقعیت 10ام (اندیس 9) در VIN
const validModelYearChars = "ABCDEFGHJKLMNPRSTVWXY123456789" // کاراکترهای معتبر برای سال تولید
if (!validModelYearChars.includes(modelYearChar)) {
errors.push("کاراکتر دهم VIN باید نشاندهنده سال تولید معتبر باشد.");
}
// 6. عدم بررسی رقم چک (کاراکتر 9) طبق درخواست کاربر
// 7. بازگرداندن نتیجه اعتبارسنجی
return {
isValid: errors.length === 0,
errors
};
}
// نمونه استفاده از تابع
const vinExample = "IRPC961V3JW004833"
const result = validateVIN(vinExample);
if (result.isValid) {
console.log("VIN معتبر است.");
} else {
console.log("VIN نامعتبر است. خطاها:", result.errors);
}
export { validateVIN };
اگر سوالی دارید در کامنت ها بپرسید.