UUID UUID Generator

Gratis · Geen account · Niets installeren

UUID-regex testen

Test zelf welke regex UUID's herkent en zie per regel het verschil tussen de ruime en de strenge variant.

  • Ruim en streng
  • Resultaat per regel
  • Tot 200 regels

UUID-regex testen

Regex
Maximaal 200 regels. Accolades, aanhalingstekens, hoofdletters en de variant zonder koppeltekens kun je zo plakken.

Resultaat 0

Het resultaat verschijnt hier.

Alle waarden worden op je eigen apparaat gemaakt met de Web Crypto API en verlaten je browser niet. Sneltoets: Ctrl + Enter — opnieuw genereren

Regex uitgelegd

Er zijn meestal twee soorten regex voor UUID's: een ruime variant die alleen naar lengte en tekensoort kijkt, en een strenge variant die ook het versienummer op de dertiende positie en het variantnummer op de zeventiende controleert.

De ruime variant gebruik je om iets dat op een UUID lijkt in een logboek te vinden, de strenge variant om te bepalen of een waarde echt bruikbaar is. Deze tool toont beide resultaten naast elkaar.

Hoe het werkt

  1. Plak de waarden die je wilt testen, één per regel en maximaal 200.
  2. Klik op Regex testen.
  3. Per regel zie je aan welke variant de waarde voldoet.
  4. Alleen wat de strenge variant haalt, is een echt geldige UUID.

Waarvoor je het gebruikt

  • Een regex testen voordat je hem in een logparser zet.
  • Waarden aan de clientkant tegenhouden voordat je ze aanneemt.
  • UUID-kolommen opsporen in een datapijplijn of BI-query.

Structuur

De strenge variant staat op de dertiende positie alleen 1 tot en met 8 toe en op de zeventiende alleen 8, 9, a of b. Die twee posities geven de versie en de variant van de UUID aan.

Waar Regex past

Wanneer kies je welke optie
OptieWanneer gebruiken
RegexAls je het patroon zelf wilt nakijken
ControlerenAls je alleen de waarde wilt beoordelen zonder het patroon
BulkAls je veel waarden wilt maken om te testen

Overzicht van alle UUID-versies

VersieSorteerbaarHerkomst van de bitsWaarvoor het past
v1NeeTijdstempel + MAC-adresBestaande systemen die v1 verwachten
v3NeeMD5-hash van de naamDeterministische ID's als MD5 verplicht is
v4Nee122 random bitsVrijwel elke gewone unieke identificatie
v5NeeSHA-1-hash van de naamAls dezelfde naam altijd dezelfde ID moet geven
v6JaHerschikte tijdstempelAls je zowel randomheid als sortering wilt
v7JaUnix-tijd in millisecondenPrimaire sleutels en gebeurtenis-ID's
v8NeeZelfgekozen bitindelingEigen formaten en experimenten

Alle zeven versies zijn 128 bits en gebruiken dezelfde notatie 8-4-4-4-12. Het verschil zit alleen in wat elk bit voorstelt.

Codevoorbeelden

javascript

// Ruim: alleen het formaat
const loose = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;

// Streng: ook versie en variant
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;

python

import re
STRICT = re.compile(r'^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}'
                    r'-[89ab][0-9a-f]{3}-[0-9a-f]{12}$', re.I)
bool(STRICT.match(value))

java

var strict = Pattern.compile(
    "^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-"
    + "[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
    Pattern.CASE_INSENSITIVE);

csharp

var strict = new Regex(
    "^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-"
    + "[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
    RegexOptions.IgnoreCase);

sql

-- PostgreSQL 13+
WHERE value ~* '^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$';

Veelgestelde vragen

Wat is het verschil tussen de ruime en de strenge variant?

De ruime variant kijkt alleen naar lengte en tekensoort, de strenge variant controleert ook de versie- en variantposities. Wil je waarden wegfilteren waarvan het formaat klopt maar de versie niet bestaat, dan heb je de strenge variant nodig.

Waarom loopt het versienummer van 1 tot 8?

Omdat RFC 9562 de versies 1 tot en met 8 definieert. Nul wordt niet gebruikt en 9 en hoger zijn gereserveerd.

Waarom zijn de varianttekens 8, 9, a en b?

Omdat de eerste twee bits van de RFC 4122 / 9562-variant 10 zijn. In hexadecimale notatie levert dat 8 tot en met b op.