module.exports = function (iban){ if (iban == null) return true; if (typeof iban != 'string') return false; //Se pasa a Mayusculas iban = iban.toUpperCase(); //Se quita los blancos de principio y final. iban = trim(iban); iban = iban.replace(/\s/g, ""); //Y se quita los espacios en blanco dentro de la cadena //La longitud debe ser siempre de 24 caracteres 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; }else{ 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, "" ); } }