Regex para string base64

Use /^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/ para verificar se uma string inteira é uma string base64 válida. Todos os exemplos abaixo foram testados com o padrão, e você pode abri-los no Regex Tester com as amostras já carregadas.

Atualizado em

/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/
Abrir no Regex Tester
EntradaResultado
SGVsbG8=✓ Corresponde
SGVsbG8gd29ybGQ=✓ Corresponde
QUJD✓ Corresponde
SGVsbG8✗ Não corresponde
SGV$bG8=✗ Não corresponde
=abc✗ Não corresponde
SGVsbG8==✗ Não corresponde

Como o padrão funciona

ParteSignificado
(?:[A-Za-z0-9+\/]{4})*Blocos completos de quatro caracteres
[A-Za-z0-9+\/]{2}==Ou um bloco final com dois sinais de preenchimento
[A-Za-z0-9+\/]{3}=Ou um bloco final com um sinal de preenchimento

Exemplos de código

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;

Observações e limitações

A string vazia também corresponde, então verifique o tamanho separadamente. Para base64url (JWTs, URLs), substitua +\/ por _- e torne o preenchimento opcional. Decodifique com o Codificador/Decodificador Base64.

Perguntas frequentes

Qual é o regex para string base64?
/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/ — ele corresponde à string inteira. Veja a tabela acima para entender o que cada parte faz.
Quais exemplos correspondem?
Entre os exemplos testados, estes correspondem: SGVsbG8=, SGVsbG8gd29ybGQ=, QUJD. Os outros não.
Como testo esse regex?
Clique em “Abrir no Regex Tester” — o padrão, as flags e o texto de exemplo são carregados automaticamente, e as correspondências são destacadas conforme você edita.