s-melnikov
8/26/2016 - 11:23 AM

check.js

function doLuhnCheck(ccNumber) {
  if (/[^0-9-\s]+/.test(ccNumber)) { return false }

  var checksum = 0,
    digit = 0,
    isEven = false

  ccNumber = ccNumber.replace(/\D/g, "")

  for (var n = ccNumber.length - 1; n >= 0; n--) {
    digit = parseInt(ccNumber.charAt(n), 10)

    if (isEven) {
      if ((digit *= 2) > 9) {
        digit -= 9;
      }
    }

    checksum += digit
    isEven = !isEven
  }
  return (checksum % 10) == 0
}