Validação de Cartão de Crédito com HTML Puro

1. Introdução

Técnica pouco conhecida para validação básica de números de cartão de crédito diretamente no HTML, sem necessidade de JavaScript (embora JS possa melhorar a formatação).

2. Implementação Básica (HTML Only)

<input type="text"
       inputmode="numeric"
       pattern="[0-9]{13,19}"
       maxlength="19"
       placeholder="1234-5678-9012-3456"
       title="Insira um número do cartão de crédito válido"
       required>

Atributos Chave:

Atributo Função
inputmode="numeric" Mostra teclado numérico em dispositivos móveis
pattern="[0-9]{13,19}" Regex: aceita apenas números (13-19 dígitos)
maxlength="19" Limita ao comprimento máximo de cartões (19 dígitos)
title Mensagem de erro personalizada quando a validação falha

Demonstração:

3. Melhoria com JavaScript (Formatação Automática)

<script>
// Formata como XXXX-XXXX-XXXX-XXXX durante a digitação
document.querySelector('input').addEventListener('input', e => {
    e.target.value = e.target.value
        .replace(/[^0-9]/g, '')  // Remove caracteres não numéricos
        .replace(/(.{4})/g, '$1-') // Adiciona hífen a cada 4 dígitos
        .trim(); // Remove espaços em branco
});
</script>

Demonstração com Formatação:

4. Limitações e Considerações

Nota: Esta técnica oferece uma primeira camada de validação, mas não substitui verificações de segurança completas no back-end.

5. Referências