UNPKG

turkish-iban-validator

Version:

Türkiye IBAN numaralarını doğrulayan sade ve hızlı bir kütüphane.

37 lines (29 loc) 1.24 kB
function isValidTurkishIban(iban) { if (!iban || typeof iban !== 'string') return false; const formatted = iban.replace(/\s+/g, '').toUpperCase(); if (!/^TR\d{24}$/.test(formatted)) return false; const rearranged = formatted.slice(4) + formatted.slice(0, 4); const numeric = rearranged.replace(/[A-Z]/g, ch => (ch.charCodeAt(0) - 55).toString()); let remainder = ''; for (let i = 0; i < numeric.length; i += 9) { remainder = (BigInt(remainder + numeric.slice(i, i + 9)) % 97n).toString(); } return BigInt(remainder) === 1n; } function calculateCheckDigits(accountPart21Digit) { const temp = accountPart21Digit.toUpperCase(); const ibanWithTR00 = `TR00${temp}`; const rearranged = ibanWithTR00.slice(4) + ibanWithTR00.slice(0, 4); const numeric = rearranged.replace(/[A-Z]/g, ch => (ch.charCodeAt(0) - 55).toString()); const mod = BigInt(numeric) % 97n; return (98n - mod).toString().padStart(2, '0'); } function generateTurkishIban(accountPart21Digit) { const checkDigits = calculateCheckDigits(accountPart21Digit); return `TR${checkDigits}${accountPart21Digit}`; } module.exports = { isValidTurkishIban, calculateCheckDigits, generateTurkishIban };