Regex para JSON Web Token (JWT)

Use /^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$/ para verificar se uma string inteira é um JSON Web Token (JWT) 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

/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$/
Abrir no Testador de Regex
EntradaResultado
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMifQ.sig_abc-123✓ Corresponde
eyJhbGciOiJub25lIn0.eyJzdWIiOiIxIn0.✓ Corresponde
abc.def✗ Não corresponde
a b.c.d✗ Não corresponde
eyJ.abc.def.ghi✗ Não corresponde

Como o padrão funciona

ParteSignificado
[A-Za-z0-9_-]+O cabeçalho, codificado em base64url
\.Um ponto
[A-Za-z0-9_-]+O payload
[A-Za-z0-9_-]*$A assinatura (vazia para tokens não assinados)

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

Observações e limitações

Verificar o formato não diz nada sobre a validade de um token — sempre valide a assinatura no servidor. Inspecione um token com o JWT Decoder.

Perguntas frequentes

Qual é a regex para JSON Web Token (JWT)?
/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$/ — ela corresponde à string inteira. Veja a tabela acima para entender o que cada parte faz.
Quais exemplos correspondem?
Dos exemplos testados, estes correspondem: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMifQ.sig_abc-123, eyJhbGciOiJub25lIn0.eyJzdWIiOiIxIn0.. Os demais não.
Como testo essa regex?
Clique em “Abrir no Testador de Regex” — o padrão, as flags e o texto de exemplo carregam automaticamente, e as correspondências são destacadas enquanto você edita.