Code de Luhn


13 juin 2013

Voici la démo et l'implémentation JS du code de Luhn que j'apprécie pour sa simplicité à vérifier des erreurs de saisie.

Génération du code
Nombre initial :
Résultat :
Validation d'un code
Nombre à vérifier :
Résultat du test :
//Vérifie que le paramètre d'entrée est valide au sens du code de Luhn. Renvoie true ou false en fonction du résulat.
function    checkLuhnCodeValidity(srcNumber)        {
    srcNumber = ""+srcNumber;
    var Total = 0;
    for(var i=0; i<srcNumber.length; i++)       {
        var CurDigit = parseInt(srcNumber[srcNumber.length - 1 - i]);
        if (isNaN(CurDigit))        return false;
        CurDigit = i%2 ? CurDigit*2 : CurDigit;
        if (CurDigit > 9)       CurDigit -= 9;
        Total += CurDigit;
    }
    return Total % 10 == 0;
}
//Renvoie le chiffre, aka le code de Luhn, qu'il faut ajouter à la variable d'entrée pour que l'ensemble soit valide au sens du code de Luhn.
function    computeValidLuhnCode(srcNumber)     {
    for(var i=0; i<=9; i++)     {
        var TestNumber = ""+srcNumber+i;
        if (checkLuhnCodeValidity(TestNumber))      return i;
    }
    return false;       //srcNumber n'est pas un nombre (peut-être la variable contient-elle des lettres ou d'autres codes ?)
}

Accueil