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
JavaScript
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
};