Cartão de pagamento
Números de cartão de crédito ou débito, só pelo algoritmo de Luhn.
Validar
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca2 casos falham
- Ruby, biblioteca3 casos falham
- Rust, biblioteca2 casos falham
- .NET, biblioteca2 casos falham
- Erlang, biblioteca
Valida um número de cartão de pagamento (crédito ou débito): de 12 a 19 dígitos e um dígito verificador de Luhn.
- A função não detecta a bandeira, não consulta a faixa do emissor e não verifica a validade nem o CVV.
- A função rejeita um número com todos os dígitos iguais, mesmo que ele passe no Luhn.
- Aceita uma string ou um número. Os caracteres de máscara (espaço em branco,
.,-e/, o conjunto que o CPF e o CNPJ aceitam) ficam entre dois dígitos quaisquer, inclusive uma sequência deles (4111 - 1111 - 1111 - 1111), porque o agrupamento impresso muda com a bandeira (4-4-4-4, 4-6-5, 4-6-4). Espaços nas pontas são ignorados. - Qualquer outro caractere torna o número inválido, em vez de ser descartado: letras (
4111a1111b1111c1111),,,_, parênteses, ou um caractere de máscara que não está entre dois dígitos (um-no início, um.no fim). - Um número só é aceito se for um inteiro seguro não negativo. Um número acima de
2^53 - 1já foi arredondado ao chegar, e um negativo ou fracionário não é um número de cartão, então passe um número mais longo como string.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
value | string | number | sim |
| retorna | boolean |
Valida um número de cartão de pagamento (crédito ou débito) com o algoritmo de Luhn. Só a quantidade de dígitos (12 a 19) e o dígito verificador de Luhn são conferidos. Não há detecção de bandeira (Visa, Mastercard, Amex...), consulta de faixa de emissor nem validação de validade/CVV.
- Aceita uma string ou um número, com os caracteres de máscara (espaço em branco,
.,-e/) em qualquer posição entre os dígitos.
import { isValidCreditCard } from '@brazilian-utils/brazilian-utils';
isValidCreditCard('4111111111111111'); // true (número de teste Visa)
isValidCreditCard('5555555555554444'); // true (número de teste Mastercard)
isValidCreditCard('378282246310005'); // true (número de teste American Express)
isValidCreditCard('4111 1111 1111 1111'); // true (máscara com espaços)
isValidCreditCard('4111 - 1111 - 1111 - 1111'); // true (uma sequência de separadores entre os dígitos)
isValidCreditCard('4111.1111/1111-1111'); // true (qualquer um dos caracteres de máscara)
isValidCreditCard('4111111111111112'); // false (dígito verificador inválido)
isValidCreditCard('0000000000000000'); // false (todos os dígitos iguais, ainda que o Luhn feche)
isValidCreditCard('4111a1111b1111c1111'); // false (letras entre os dígitos)
isValidCreditCard(4111111111111111111); // false (acima de 2^53 - 1, passe como string)Fonte: ISO/IEC 7812-1.
Código: brazilian-utils/javascriptTeste com JavaScript isValidCreditCard
Casos de teste compartilhados (42) e o resultado em cada biblioteca creditCard.isValid
Fontes oficiais
Atualizado em
