frontend/.pnpm-store/v3/files/10/a4c3b46336848011759e255292e6c4e4d77b62c732aa498fee9614800fde49d6f6cc4e5947cb08442155983ff08851c754e2782e906d380eecc4d2442de603

30 lines
628 B
Plaintext

import assertString from './util/assertString';
export default function isLuhnValid(str) {
assertString(str);
var sanitized = str.replace(/[- ]+/g, '');
var sum = 0;
var digit;
var tmpNum;
var shouldDouble;
for (var i = sanitized.length - 1; i >= 0; i--) {
digit = sanitized.substring(i, i + 1);
tmpNum = parseInt(digit, 10);
if (shouldDouble) {
tmpNum *= 2;
if (tmpNum >= 10) {
sum += tmpNum % 10 + 1;
} else {
sum += tmpNum;
}
} else {
sum += tmpNum;
}
shouldDouble = !shouldDouble;
}
return !!(sum % 10 === 0 ? sanitized : false);
}