クレジットカードの番号には規則があり合致しないとエラーになります。
チェックの仕組みを「ルーンアルゴリズム」と言うそうです。
この手のチェックの仕組みは数列からチェックデジットを計算して先頭か末尾に付けるというパターンが多いと思いますが、この仕組みは数列全体が正しいか否かをチェックするようです。
これをJavaScriptで再現してみました。
function luhn_checksum(card_number) {
var a, s, i, x;
a = card_number.split("").reverse();
s = 0;
for (i = 0; i < a.length; i++) {
x = a[i] * (1 + i % 2);
s += x > 9 ? x - 9 : x;
}
return s % 10 == 0;
}
var a, s, i, x;
a = card_number.split("").reverse();
s = 0;
for (i = 0; i < a.length; i++) {
x = a[i] * (1 + i % 2);
s += x > 9 ? x - 9 : x;
}
return s % 10 == 0;
}
JSFiddleで試せます。
https://jsfiddle.net/806b7xya/
コメント