Как работает шаблон
| Часть | Значение |
|---|---|
(?:[A-Za-z0-9+\/]{4})* | Полные блоки по четыре символа |
[A-Za-z0-9+\/]{2}== | Или последний блок с двумя знаками дополнения |
[A-Za-z0-9+\/]{3}= | Или последний блок с одним знаком дополнения |
Примеры кода
JavaScript
const re = /^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/;
re.test(value); // true or falsePython
import re
bool(re.fullmatch(r'(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?', value))PHP
preg_match('/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/', $value) === 1;
Примечания и ограничения
Пустая строка тоже проходит проверку, поэтому длину стоит проверять отдельно. Для base64url (JWT, URL) замените +\/ на _- и сделайте дополнение (padding) необязательным. Декодировать можно с помощью Base64 Encoder/Decoder.
Тестер регулярных выражений
Введите шаблон и смотрите, как совпадения подсвечиваются прямо в тестовом тексте.