Регулярное выражение для 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}$/, чтобы проверить, что вся строка является корректным UUID. Каждый пример ниже проверен по этому шаблону, а открыть его в Regex Tester можно с уже загруженными образцами.

Обновлено

/^[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}$/
Открыть в Regex Tester
ВводРезультат
123e4567-e89b-12d3-a456-426614174000✓ Совпадение
550e8400-e29b-41d4-a716-446655440000✓ Совпадение
01890a5d-ac96-774b-bcce-b302099a8057✓ Совпадение
123e4567e89b12d3a456426614174000✗ Нет совпадения
123e4567-e89b-02d3-a456-426614174000✗ Нет совпадения
zzzzzzzz-e89b-12d3-a456-426614174000✗ Нет совпадения

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

ЧастьЗначение
[0-9a-fA-F]{8}Восемь шестнадцатеричных цифр
[1-8][0-9a-fA-F]{3}Третья группа начинается с версии, 1–8
[89abAB][0-9a-fA-F]{3}Четвёртая группа начинается с варианта по RFC 9562: 8, 9, a или b
[0-9a-fA-F]{12}Двенадцать шестнадцатеричных цифр в конце
-Дефисы на позициях 8-4-4-4-12

Примеры кода

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;

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

Чтобы принимать только UUID версии 4 (случайные), замените [1-8] на 4. Тестовые значения можно создать с помощью генератора UUID.

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

Какое регулярное выражение используется для 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}$/ — шаблон проверяет всю строку целиком. Что делает каждая часть, смотрите в таблице выше.
Какие примеры совпадают?
Из проверенных примеров совпадают: 123e4567-e89b-12d3-a456-426614174000, 550e8400-e29b-41d4-a716-446655440000, 01890a5d-ac96-774b-bcce-b302099a8057. Остальные — нет.
Как протестировать это регулярное выражение?
Нажмите «Открыть в Regex Tester» — шаблон, флаги и тестовый текст загрузятся автоматически, а совпадения будут подсвечиваться по мере редактирования.