
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:
Começando pelo dígito mais à direita, mova para a esquerda dobrando cada segundo dígito.
Se dobrar o dígito resultar em um número maior que 9, subtraia 9.
Some todos os dígitos.
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
Validador Regex de Senha em Java: Adicione validação segura de senha em fluxos de cadastro.
Testador de Regex Java: Edite ou teste variações de regex para outros tipos de cartão.
Gerador de Token: Gere tokens seguros de sessão de pagamento.
Codificador Base64: Codifique tokens de cartão de crédito para transmissão segura.
Frequently Asked Questions
Isso valida se o cartão é real?
Posso usar um único padrão para todos os tipos de cartão?
Há diferença entre cartões Visa de 13 e 16 dígitos?
Posso validar entradas formatadas como 4111-1111-1111-1111?
Devo verificar também a data de validade e o CVV?
Related Articles



Teste suas APIs hoje!
Escreva em português simples, o Qodex transforma em testes seguros e prontos para execução.



