Validar IBAN con una función en JavaScript

El IBAN (International Bank Account Number) es el código internacional usado para identificar una cuenta bancaria. Es un código de 24 caracteres alfanumérico y sirve para cualquier entidad financiera que pertenezca a los países adheridos al sistema IBAN, por lo que puede ser interesante validar IBAN para saber que es correcto. Este formato lo dictamina el estándar EBS204, definido por el Comité Europeo de Estándares Bancarios.

En España se usa este sistema desde el 1 de febrero de 2014, cuando sustituyó al código cuenta cliente (CCC) que se usaba hasta entonces por el banco, habiendo un periodo de convivencia de ambos sistemas. El código está compuesto por los siguientes campos:

  • El país, representado por 2 letras. En el caso de España, por ejemplo, éste sería ES.
  • Dos dígitos de control, que sirven de validación para el resto del código, reduciendo la posibilidad de errores en la transcripción.
  • Número de cuenta, donde se puede identificar la entidad y la oficina donde se abrió la cuenta.
Validar IBAN suele ser recomendable
Para cualquier transferencia bancaria es necesario conocer el IBAN, por eso es interesante validar IBAN antes de enviarlo.

Validar IBAN, función en JavaScript

Tras esta introducción para entender el formato del IBAN, solo queda exponer la función de validación de IBAN en JavaScript, para poder validar IBAN introducido en cualquier formulario web donde se precise. Esta función sólo lo valida, por lo que no sirve para calcular IBAN alguno. Es decir, solo para validar cuenta bancaria.

La función principal es fn_ValidateIBAN y llama a las otras dos funciones que se adjuntan. Como parámetro, se le pasa la cadena sobre la cual se desea comprobar IBAN. Tras comprobarlo, devuelve true si el IBAN es válido y false en caso contrario.

function fn_ValidateIBAN(IBAN) {

    //Se pasa a Mayusculas
    IBAN = IBAN.toUpperCase();
    //Se quita los blancos de principio y final.
    IBAN = IBAN.trim();
    IBAN = IBAN.replace(/\s/g, ""); //Y se quita los espacios en blanco dentro de la cadena

    var letra1,letra2,num1,num2;
    var isbanaux;
    var numeroSustitucion;
    //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
    letra1 = IBAN.substring(0, 1);
    letra2 = IBAN.substring(1, 2);
    num1 = getnumIBAN(letra1);
    num2 = getnumIBAN(letra2);
    //Se sustituye las letras por números.
    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 modulo97, definida más abajo
    resto = modulo97(isbanaux);
    if (resto == 1){
        return true;
    }else{
        return false;
    }
}

function modulo97(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 getnumIBAN(letra) {
    ls_letras = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    return ls_letras.search(letra) + 10;
}

Para probarlo, se pueden encontrar por internet un generador de IBAN y así tener un juego de pruebas para nuestros desarrollos web.

14 comentarios en «Validar IBAN con una función en JavaScript»

  1. ¡Muchas gracias! Funciona perfectamente y además esta muy bien explicado. Osea que lo podemos entender los principiantes como yo.

    Responder
  2. Hola Aritz,

    Este algoritmo da por válido el siguiente IBAN: ES06 0030 1235 0903 0005 0273 (ES0600301235090300050273).

    El resto es 1 pero el número de cuenta es incorrecto.

    Desde esta página (https://es.ibancalculator.com/iban_validieren.html) el error que indican es el siguiente:

    Número de cuenta 0300050273: Se produjo un fallo en la validación del la suma de comprobación (checksum) del número de cuenta.

    Saludos.

    – Daniel –

    Responder
  3. Buenas tardes!

    Lastima que necesite implementarlo en una formula dentro de hoja de calculo (de google). Aun así, muchas gracias.

    Responder

Deja un comentario

Pin It on Pinterest