Raven-Style CC Checker
CC Validator Pro
Enter card details for structural validation
Algorithm: -
Bank: Unknown
// script.js
const cardInput = document.getElementById('cardNumber');
const brandDisplay = document.getElementById('cardBrand');
const validateBtn = document.getElementById('validateBtn');
const statusBox = document.getElementById('statusResult');
// 1. Format input with spaces and detect brand
cardInput.addEventListener('input', (e) => {
let value = e.target.value.replace(/\D/g, ''); // Remove non-digits
// Detect Brand
if (value.startsWith('4')) brandDisplay.innerText = "VISA";
else if (value.match(/^5[1-5]/)) brandDisplay.innerText = "MASTERCARD";
else if (value.match(/^3[47]/)) brandDisplay.innerText = "AMEX";
else brandDisplay.innerText = "CARD";
// Add spaces for readability
let formattedValue = value.match(/.{1,4}/g)?.join(' ') || "";
e.target.value = formattedValue;
});
// 2. The Luhn Algorithm Function
function luhnCheck(num) {
let arr = (num + '').split('').reverse().map(x => parseInt(x));
let lastDigit = arr.shift();
let sum = arr.reduce((acc, val, i) => (i % 2 !== 0 ? acc + val : acc + ((val *= 2) > 9 ? val - 9 : val)), 0);
sum += lastDigit;
return sum % 10 === 0;
}
// 3. Handle Click
validateBtn.addEventListener('click', () => {
const rawValue = cardInput.value.replace(/\s+/g, '');
if (rawValue.length < 13) {
alert("Please enter a full card number.");
return;
}
const isValid = luhnCheck(rawValue);
statusBox.classList.remove('hidden');
if (isValid) {
statusBox.className = "status-box valid";
document.getElementById('statusText').innerText = "STRUCTURALLY VALID";
document.getElementById('algoResult').innerText = "Passed (Mod 10)";
} else {
statusBox.className = "status-box invalid";
document.getElementById('statusText').innerText = "INVALID NUMBER";
document.getElementById('algoResult').innerText = "Failed";
}
});
0 Comments