Regex para UUID

Use /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/ para verificar se uma string inteira é um UUID válido. 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

/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/
Abrir no Regex Tester
EntradaResultado
123e4567-e89b-12d3-a456-426614174000✓ Corresponde
550e8400-e29b-41d4-a716-446655440000✓ Corresponde
01890a5d-ac96-774b-bcce-b302099a8057✓ Corresponde
123e4567e89b12d3a456426614174000✗ Não corresponde
123e4567-e89b-02d3-a456-426614174000✗ Não corresponde
zzzzzzzz-e89b-12d3-a456-426614174000✗ Não corresponde

Como o padrão funciona

ParteSignificado
[0-9a-fA-F]{8}Oito dígitos hexadecimais
[1-8][0-9a-fA-F]{3}O terceiro grupo começa com a versão, de 1 a 8
[89abAB][0-9a-fA-F]{3}O quarto grupo começa com a variante RFC 9562: 8, 9, a ou b
[0-9a-fA-F]{12}Doze dígitos hexadecimais no final
-Traços nas posições 8-4-4-4-12

Exemplos de código

JavaScript

const re = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}', value))

PHP

preg_match('/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/', $value) === 1;

Observações e limitações

Para aceitar apenas UUIDs versão 4 (aleatórios), troque [1-8] por 4. Gere valores de teste com o UUID Generator.

Perguntas frequentes

Qual é a regex para UUID?
/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/ — ela corresponde à string inteira. Veja a tabela acima para entender o que faz cada parte.
Quais exemplos correspondem?
Dos exemplos testados, estes correspondem: 123e4567-e89b-12d3-a456-426614174000, 550e8400-e29b-41d4-a716-446655440000, 01890a5d-ac96-774b-bcce-b302099a8057. Os outros não correspondem.
Como testo essa 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.