Regex для base64 строки

Используйте /^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/, чтобы проверить, что вся строка является корректной base64 строкой. Каждый пример ниже проверен по этому шаблону, и его можно открыть в Regex Tester с уже загруженными образцами.

Обновлено

/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/
Открыть в Regex Tester
ВводРезультат
SGVsbG8=✓ Совпадение
SGVsbG8gd29ybGQ=✓ Совпадение
QUJD✓ Совпадение
SGVsbG8✗ Нет совпадения
SGV$bG8=✗ Нет совпадения
=abc✗ Нет совпадения
SGVsbG8==✗ Нет совпадения

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

ЧастьЗначение
(?:[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 false

Python

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.

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

Какой regex нужен для base64 строки?
/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/ — он проверяет всю строку целиком. Что делает каждая часть, см. в таблице выше.
Какие примеры подходят?
Из проверенных примеров подходят: SGVsbG8=, SGVsbG8gd29ybGQ=, QUJD. Остальные не подходят.
Как протестировать это регулярное выражение?
Нажмите «Открыть в Regex Tester» — шаблон, флаги и образец текста загрузятся автоматически, а совпадения будут подсвечиваться при редактировании.