Regex para número de cartão de crédito

Use /^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13})$/ para verificar se uma string inteira é um número de cartão de crédito válido. Todos os exemplos abaixo foram testados contra o padrão, e você pode abri-los no Testador de Regex com as amostras já carregadas.

Atualizado em

/^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13})$/
Abrir no Testador de Regex
EntradaResultado
4111111111111111✓ Corresponde
5500000000000004✓ Corresponde
378282246310005✓ Corresponde
1234567812345678✗ Não corresponde
4111 1111 1111 1111✗ Não corresponde
411111111111111✗ Não corresponde

Como o padrão funciona

ParteSignificado
4\d{12}(?:\d{3})?Visa: começa com 4, seguido de 13 ou 16 dígitos
5[1-5]\d{14}Mastercard: 51–55, 16 dígitos
3[47]\d{13}American Express: 34 ou 37, 15 dígitos

Exemplos de código

JavaScript

const re = /^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13})$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13})', value))

PHP

preg_match('/^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13})$/', $value) === 1;

Observações e limitações

Remova espaços e traços antes de testar e, em seguida, execute uma verificação de soma Luhn — a regex só verifica o formato. A Mastercard também emite números 2221–2720; adicione |2(?:2[2-9]|[3-6]\d|7[01]|720)\d{12} para cobri-los. Nunca registre nem armazene números de cartão reais. Os exemplos são números de teste padrão.

Perguntas frequentes

Qual é a regex para número de cartão de crédito?
/^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13})$/ — ela corresponde à string inteira. Veja a tabela acima para entender o que cada parte faz.
Quais exemplos correspondem?
Dos exemplos testados, estes correspondem: 4111111111111111, 5500000000000004, 378282246310005. Os outros não.
Como testo essa regex?
Clique em “Abrir no Testador de Regex” — o padrão, as flags e o texto de exemplo são carregados automaticamente, e as correspondências são destacadas conforme você edita.