Regex para JSON Web Token (JWT)

Usa /^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$/ para comprobar que una cadena completa es un JSON Web Token (JWT) válido. Cada ejemplo de abajo se ha probado con el patrón, y puedes abrirlo en el Regex Tester con las muestras ya cargadas.

Actualizado el

/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$/
Abrir en Regex Tester
EntradaResultado
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMifQ.sig_abc-123✓ Coincide
eyJhbGciOiJub25lIn0.eyJzdWIiOiIxIn0.✓ Coincide
abc.def✗ No coincide
a b.c.d✗ No coincide
eyJ.abc.def.ghi✗ No coincide

Cómo funciona el patrón

ParteSignificado
[A-Za-z0-9_-]+El encabezado, codificado en base64url
\.Un punto
[A-Za-z0-9_-]+La carga útil (payload)
[A-Za-z0-9_-]*$La firma (vacía en tokens sin firmar)

Ejemplos de código

JavaScript

const re = /^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*', value))

PHP

preg_match('/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$/', $value) === 1;

Notas y limitaciones

Que el formato coincida no dice nada sobre si un token es válido: verifica siempre la firma en el servidor. Inspecciona un token con el JWT Decoder.

Preguntas frecuentes

¿Cuál es el regex para JSON Web Token (JWT)?
/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$/ — coincide con la cadena completa. Consulta la tabla de arriba para ver qué hace cada parte.
¿Qué ejemplos coinciden?
De los ejemplos probados, coinciden estos: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMifQ.sig_abc-123 y eyJhbGciOiJub25lIn0.eyJzdWIiOiIxIn0.. Los demás no.
¿Cómo pruebo este regex?
Haz clic en “Abrir en Regex Tester”: el patrón, los flags y el texto de ejemplo se cargan automáticamente, y las coincidencias se resaltan mientras editas.