Регулярное выражение для JSON Web Token (JWT)

Используйте /^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$/, чтобы проверить, что вся строка является корректным JSON Web Token (JWT). Каждый пример ниже проверен по этому шаблону, а открыть его можно в Regex Tester с уже загруженными образцами.

Обновлено

/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$/
Открыть в Regex Tester
ВводРезультат
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMifQ.sig_abc-123✓ Совпадение
eyJhbGciOiJub25lIn0.eyJzdWIiOiIxIn0.✓ Совпадение
abc.def✗ Нет совпадения
a b.c.d✗ Нет совпадения
eyJ.abc.def.ghi✗ Нет совпадения

Как работает шаблон

ЧастьЗначение
[A-Za-z0-9_-]+Заголовок в кодировке base64url
\.Точка
[A-Za-z0-9_-]+Полезная нагрузка (payload)
[A-Za-z0-9_-]*$Подпись (пустая для неподписанных токенов)

Примеры кода

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;

Примечания и ограничения

Совпадение формата ещё не означает, что токен действителен, поэтому подпись всегда проверяйте на сервере. Разобрать токен можно с помощью JWT Decoder.

Часто задаваемые вопросы

Какое регулярное выражение для JSON Web Token (JWT)?
/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$/ — совпадает со всей строкой. Что делает каждая часть, см. в таблице выше.
Какие примеры совпадают?
Из проверенных примеров совпадают: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMifQ.sig_abc-123, eyJhbGciOiJub25lIn0.eyJzdWIiOiIxIn0.. Остальные не совпадают.
Как протестировать это регулярное выражение?
Нажмите «Открыть в Regex Tester» — шаблон, флаги и примеры текста загрузятся автоматически, а совпадения будут подсвечиваться по мере редактирования.