Regex para número de tarjeta de crédito

Usa /^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13})$/ para comprobar que una cadena completa es un número de tarjeta de crédito válido. Cada ejemplo de abajo se ha probado con el patrón, y puedes abrirlo en el Probador de Regex con las muestras ya cargadas.

Actualizado el

/^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13})$/
Abrir en el probador de Regex
EntradaResultado
4111111111111111✓ Coincide
5500000000000004✓ Coincide
378282246310005✓ Coincide
1234567812345678✗ No coincide
4111 1111 1111 1111✗ No coincide
411111111111111✗ No coincide

Cómo funciona el patrón

ParteSignificado
4\d{12}(?:\d{3})?Visa: empieza por 4, con 13 o 16 dígitos
5[1-5]\d{14}Mastercard: 51–55, con 16 dígitos
3[47]\d{13}American Express: 34 o 37, con 15 dígitos

Ejemplos 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;

Notas y limitaciones

Quita los espacios y guiones antes de probar, y después ejecuta una suma de verificación Luhn: la regex solo comprueba la forma. Mastercard también emite números 2221–2720; añade |2(?:2[2-9]|[3-6]\d|7[01]|720)\d{12} para cubrirlos. Nunca registres ni almacenes números de tarjeta en texto plano. Los ejemplos son números de prueba estándar.

Preguntas frecuentes

¿Cuál es la regex para número de tarjeta de crédito?
/^(?:4\d{12}(?:\d{3})?|5[1-5]\d{14}|3[47]\d{13})$/ — coincide con la cadena completa. Consulta la tabla de arriba para ver qué hace cada parte.
¿Qué ejemplos coinciden?
De los ejemplos probados, estos coinciden: 4111111111111111, 5500000000000004, 378282246310005. Los demás no.
¿Cómo pruebo esta regex?
Haz clic en «Abrir en el probador de Regex»: el patrón, los flags y el texto de muestra se cargan automáticamente, y las coincidencias se resaltan mientras editas.