frontend/.pnpm-store/v3/files/d0/87d4cf36486b12eddc56a9b71281fccb6e3246c0f2e2c493428aaf69df0522de5fc1b7360e826d8fedaee30cb2d833a4d537992c018ff9cb891b6d61673439

30 lines
629 B
Plaintext

import assertString from './util/assertString';
export default function isLuhnNumber(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);
}