Пример функции для валидации карты по алгоритму Луна. Например если вы хотите сообщить сразу человеку если он опечатался при введении карты ;) //Возвращаем true елси карта норм, false если не норм function validСard(value) { //Не принимаем пустую строку if(value.length < 1) return false; //Принимаем только цифры if (/[^0-9-\s]+/.test(value)) return false; //проверка по алгоритму Луна var nCheck = 0, nDigit = 0, bEven = false; value = value.replace(/\D/g, ""); for (var n = value.length - 1; n >= 0; n--) { var cDigit = value.charAt(n), nDigit = parseInt(cDigit, 10); if (bEven) { if ((nDigit *= 2) > 9) nDigit -= 9; } nCheck += nDigit; bEven = !bEven; } return (nCheck % 10) == 0; } JavaScript //Возвращаем true елси карта норм, false если не норм function validСard(value) { //Не принимаем пустую строку if(value.length < 1) return false; //Принимаем только цифры if (/[^0-9-\s]+/.test(value)) return false; //проверка по алгоритму Луна var nCheck = 0, nDigit = 0, bEven = false; value = value.replace(/\D/g, ""); for (var n = value.length - 1; n >= 0; n--) { var cDigit = value.charAt(n), nDigit = parseInt(cDigit, 10); if (bEven) { if ((nDigit *= 2) > 9) nDigit -= 9; } nCheck += nDigit; bEven = !bEven; } return (nCheck % 10) == 0; } Демо пример: Клик