NewIntroducing QODEX QA Services — platform-powered QA for API-driven teams.Learn more →
Validador Regex de Cartão de Crédito em Java

Validador Regex de Cartão de Crédito em Java

O Validador Regex de Cartão de Crédito em Java permite verificar instantaneamente se um número de cartão de crédito corresponde a padrões comuns para tipos como Visa, MasterCard, AMEX e outros usando regex em Java. Isso é fundamental em sistemas de pagamento, formulários de cadastro e aplicações de e-commerce.

Experimente outras ferramentas Java para validação de entrada:


Validador Regex de Cartão de Crédito em Java - Documentação

O que é um Regex de Cartão de Crédito?

Os números de cartão de crédito seguem padrões de formatação estritos definidos pelas redes de cartão. Um regex de cartão de crédito é usado para garantir que a estrutura do número esteja de acordo com o formato esperado antes de uma verificação mais aprofundada como o algoritmo de Luhn.

Cada tipo de cartão tem um dígito inicial único e um comprimento específico:

Tipo de Cartão

Começa Com

Comprimento

Visa

4

13 ou 16

MasterCard

51 a 55 ou 2221 a 2720

16

AMEX

34 ou 37

15

Os números de cartão geralmente são agrupados em blocos de quatro no cartão físico para facilitar a leitura, e cada rede principal usa uma estrutura específica. Reconhecer esses padrões permite identificar a operadora apenas pelo número:

  • Visa: 13 ou 16 dígitos, sempre começando com 4.

  • MasterCard: 16 dígitos, começando com números de 51 a 55 ou qualquer número entre 2221 e 2720.

  • Discover: 16 dígitos, começando com 6011 ou 65.

  • American Express: 15 dígitos, começa com 34 ou 37.

  • Diners Club: 14 dígitos, começa com 300 a 305, 36 ou 38.

  • JCB: 15 dígitos começando com 2131 ou 1800, ou 16 dígitos começando com 35.

Padrões Regex Java para Cartões de Crédito

Aqui estão alguns padrões regex comuns:


Visa:

^4[0-9]{12}(?:[0-9]{3})?$

Mastercard:

^5[1-5][0-9]{14}|^2(2[2-9][0-9]{2}|[3-6][0-9]{3}|7([01][0-9]{2}|20))[0-9]{12}$

American Express:

^3[47][0-9]{13}$

Esses padrões verificam apenas a estrutura, não a validade real do cartão.

Validando Múltiplos Tipos de Cartão em Java


Para validar vários números de cartão de uma vez, você pode usar um padrão regex combinado com as classes Pattern e Matcher do Java:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class CreditCardValidator { public static void main(String[] args) { String visaCard = "4111111111111111"; String visaPattern = "^4[0-9]{12}(?:[0-9]{3})?$";

    Pattern pattern = Pattern.compile(visaPattern);
    Matcher matcher = pattern.matcher(visaCard);

    if (matcher.matches()) {
        System.out.println("Valid Visa card number");
    } else {
        System.out.println("Invalid Visa card number");
    }
}

}

Esta abordagem é especialmente útil ao trabalhar com entradas de usuário em formulários, APIs ou validação de dados em lote.

Lembre-se: a validação regex garante que o número do cartão pareça correto e corresponda ao formato esperado, mas não garante que o número seja real ou ativo. Para uma validação completa, implemente também o algoritmo de Luhn, que verifica o checksum do número para integridade.

Algoritmo de Luhn: Verificando Números de Cartão de Crédito em Java

O regex ajuda a garantir que um número de cartão pareça correto, mas como verificar se o número em si poderia ser válido? É aí que entra o algoritmo de Luhn, um método de checksum embutido usado pelas redes de cartão para detectar erros acidentais.

O algoritmo funciona da seguinte forma:

  1. Começando pelo dígito mais à direita, mova para a esquerda dobrando cada segundo dígito.

  2. Se dobrar o dígito resultar em um número maior que 9, subtraia 9.

  3. Some todos os dígitos.

  4. Se o total módulo 10 for zero, o número é válido.

Método Java simples para validação de Luhn:

public class LuhnValidator {
public static boolean isValid(String ccNumber) {
int sum = 0;
boolean alternate = false;
for (int i = ccNumber.length() - 1; i >= 0; i--) {
int n = Character.getNumericValue(ccNumber.charAt(i));
if (alternate) {
n *= 2;
if (n > 9) {
n -= 9;
}
}
sum += n;
alternate = !alternate;
}
return (sum % 10 == 0);
}
}

Entradas de Exemplo

Válidas:

  • Visa: 4111111111111111

  • MasterCard: 5555555555554444

  • AMEX: 371449635398431

Inválidas:

  • 1234567890123456 (prefixo inválido)

  • 411111111111111 (comprimento incorreto)

  • abcdefg12345678 (caracteres não numéricos)

Casos de Uso

  • Formulários de Checkout: Valide o formato do número do cartão antes de chamadas de API.

  • Onboarding de Usuários: Garanta que o formato do cartão esteja correto durante o cadastro.

  • Prevenção de Fraude: Rejeite rapidamente números de cartão obviamente falsos.

  • Limpeza de Dados: Valide e higienize números de cartão armazenados em logs ou bancos de dados.

Dicas Profissionais

  • Nunca armazene números de cartão brutos. Use um serviço de hash ou tokenização segura.

  • Combine sempre as verificações regex com o algoritmo de Luhn para validação real do número de cartão.

  • Não confie apenas no regex para detecção de fraude: ele é para validação de formato, não de legitimidade.

  • Higienize a entrada removendo espaços ou hífens antes de verificar contra o regex.

  • Personalize o regex se você suportar apenas certos tipos de cartão (por exemplo, Visa e MasterCard).

  • Use um padrão separado por tipo de cartão para melhor UX e mensagens de validação direcionadas.

Combine com Estas Ferramentas

Frequently Asked Questions

Isso valida se o cartão é real?

Não, o regex verifica apenas a estrutura. Use o algoritmo de Luhn para verificar a legitimidade.

Posso usar um único padrão para todos os tipos de cartão?

Você pode combiná-los, mas é melhor manter padrões separados por tipo de cartão para maior clareza.

Há diferença entre cartões Visa de 13 e 16 dígitos?

Sim. Ambos são válidos dependendo do emissor, portanto inclua dígitos opcionais no seu regex.

Posso validar entradas formatadas como 4111-1111-1111-1111?

Sim, mas você precisa modificar o regex ou higienizar a entrada primeiro.

Devo verificar também a data de validade e o CVV?

Sim, mas esses campos exigem regexes separados ou campos de formulário diferentes, não fazem parte deste padrão.

Teste suas APIs hoje!

Escreva em português simples, o Qodex transforma em testes seguros e prontos para execução.