123456789101112131415161718192021222324252627282930 |
- 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);
- }
|