Что такое Валидатор UUID
Валидатор UUID отвечает на два разных вопроса. Первый — структурный: является ли строка корректным 128-битным идентификатором: 32 hex-символа, обычно записанные как 8-4-4-4-12, с правильно выставленными ниблом версии и битами варианта согласно RFC 9562. Второй — смысловой: что именно содержит значение?
Инструмент проверяет и то, и другое. Сначала значение нормализуется, поэтому фигурные и круглые скобки, кавычки, верхний регистр и отсутствие дефисов допускаются. Затем выводится версия, вариант и — там, где структура это позволяет — встроенное время. Инструмент сознательно не утверждает, что UUID был когда-либо выдан: UUID создаются без центрального реестра, поэтому «корректный» может означать только «правильно построенный и самосогласованный».
Как использовать
- Вставьте по одному значению в строке — до 200 строк за раз.
- Нажмите Проверить. Каждая строка разбирается независимо, поэтому одна ошибка не мешает остальным.
- Изучите таблицу: корректность, нибл версии и расшифрованное описание содержимого.
Сценарии
- Отладка ответов API, когда идентификатор может оказаться UUID, GUID, слагом или чем-то ещё.
- Проверка данных перед импортом: все ли строки действительно 32 hex-символа, нет ли обрезанных значений?
- Выяснение реальной версии в системе: v4 для случайных ключей, v7 при опоре на порядок вставки, v1 для старого Windows-стека.
Структура
Тринадцатый hex-символ содержит версию, семнадцатый — вариант. Всё остальное — полезная нагрузка: у v4 она случайная, у v7 первые 48 бит — метка времени Unix в миллисекундах, у v1 и v6 — 60-битный счётчик 100-наносекундных тиков с 1582-10-15.
Именно поэтому расшифровать можно не все версии. UUID v3 и v5 — это MD5- или SHA-1-хэш пространства имён и имени, а хэш необратим: проверить структуру можно, а восстановить исходное имя — нет.
Сравнение Валидатор UUID с другими форматами
| Вариант | Когда использовать |
|---|---|
UUID v1 | Время + node. Расшифровываются и 60-битная метка времени, и поле node. |
UUID v4 | 122 случайных бита. Узнать можно только корректность формата. |
UUID v7 | Сначала 48-битное время Unix, затем случайные биты. Метка времени читается напрямую. |
UUID v3 / v5 | Хэш пространства имён и имени. Структура проверяется, входные данные — нет. |
Примеры кода
JavaScript
// Строгая проверка: версия 1-8 и нибл варианта RFC.
const STRICT = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
STRICT.test('550e8400-e29b-41d4-a716-446655440000'); // true
STRICT.test('550e8400-e29b-01d4-a716-446655440000'); // false, версия 0
Python
import uuid
try:
u = uuid.UUID('550e8400-e29b-41d4-a716-446655440000')
print(u.version, u.variant) # 4, 'specified in RFC 4122'
except ValueError as exc:
print('не UUID:', exc)
PostgreSQL
-- Запретить попадание мусора в таблицу
ALTER TABLE items ADD CONSTRAINT items_id_is_uuid
CHECK (id::text ~ '^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$');
-- PostgreSQL 18 читает метаданные напрямую
SELECT uuid_extract_version(id), uuid_extract_timestamp(id) FROM items LIMIT 5;
Частые вопросы
Что делает UUID некорректным?
Три причины: после удаления разделителей остаётся не 32 hex-символа; нибл версии (13-й символ) равен 0, 9 или выше — таких версий в RFC нет; биты варианта (17-й символ) не совпадают ни с одним определённым вариантом. Регистр, скобки и отсутствие дефисов ошибкой не являются.
Можно ли расшифровать время из любого UUID?
Нет. Встроенные часы есть только у v1, v6 и v7. v4 полностью случаен и полезной нагрузки не несёт. v3 и v5 — хэши, и обратить их нельзя.
Корректный UUID означает, что запись существует?
Нет. UUID специально устроены так, чтобы любая машина могла создать их без реестра, поэтому по строке невозможно узнать, сохранён ли этот идентификатор где-либо.