module.exports = function(iban) { if (iban == null) return true; if (typeof iban != 'string') return false; iban = iban.toUpperCase(); iban = trim(iban); iban = iban.replace(/\s/g, ''); if (iban.length != 24) { return false; } // Se coge las primeras dos letras y se pasan a números var letter1 = iban.substring(0, 1); var letter2 = iban.substring(1, 2); var num1 = getIbanNumber(letter1); var num2 = getIbanNumber(letter2); // Se sustituye las letras por números. var isbanaux = String(num1) + String(num2) + iban.substring(2); // Se mueve los 6 primeros caracteres al final de la cadena. isbanaux = isbanaux.substring(6) + isbanaux.substring(0, 6); // Se calcula el resto, llamando a la función module97, definida más abajo var resto = module97(isbanaux); if (resto == 1) { return true; } return false; function module97(iban) { var parts = Math.ceil(iban.length / 7); var remainer = ''; for (var i = 1; i <= parts; i++) { remainer = String(parseFloat(remainer + iban.substr((i - 1) * 7, 7)) % 97); } return remainer; } function getIbanNumber(letra) { var letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; return letters.search(letra) + 10; } function trim(text) { return (text || '').replace(/^(\s|\u00A0)+|(\s|\u00A0)+$/g, ''); } };