Controleren uitgelegd
Een UUID lijkt al snel geldig als de lengte klopt, maar ook het dertiende teken met het versienummer en het zeventiende met het variantnummer moeten volgens de standaard kloppen. Deze tool controleert die twee posities en meldt de versie en de variant.
Bij versies die een tijd in de waarde hebben, zoals v1, v6 en v7, wordt die tijdstempel uitgelezen. Dat is handig als je in een logboek alleen de waarde hebt en wilt weten wanneer die is gemaakt.
Hoe het werkt
- Plak één waarde per regel, maximaal 200 regels.
- Accolades, aanhalingstekens, de variant zonder koppeltekens en hoofdletters mogen er gewoon in staan.
- Klik op Controleren en je ziet per regel of de waarde geldig is en welke versie het is.
- Bij versies met een tijdstempel wordt dat moment ook getoond.
Waarvoor je het gebruikt
- Onterechte waarden opsporen in productiedata.
- Terugzoeken wanneer een UUID in een logbestand is gemaakt.
- Voor een migratie controleren of een bestaande kolom aan de standaard voldoet.
Structuur
Het dertiende hexadecimale teken geeft de versie aan en het zeventiende de variant. Vallen die buiten de standaard, dan is de waarde ongeldig ook al klopt het UUID-formaat verder.
Waar Controleren past
| Optie | Wanneer gebruiken |
|---|---|
Controleren | Meerdere waarden in één keer nakijken, inclusief tijdstempel |
Omzetten | Dezelfde waarde in een andere notatie zetten |
UUID v4 | Een nieuwe geldige waarde maken |
Overzicht van alle UUID-versies
| Versie | Sorteerbaar | Herkomst van de bits | Waarvoor het past |
|---|---|---|---|
| v1 | Nee | Tijdstempel + MAC-adres | Bestaande systemen die v1 verwachten |
| v3 | Nee | MD5-hash van de naam | Deterministische ID's als MD5 verplicht is |
| v4 | Nee | 122 random bits | Vrijwel elke gewone unieke identificatie |
| v5 | Nee | SHA-1-hash van de naam | Als dezelfde naam altijd dezelfde ID moet geven |
| v6 | Ja | Herschikte tijdstempel | Als je zowel randomheid als sortering wilt |
| v7 | Ja | Unix-tijd in milliseconden | Primaire sleutels en gebeurtenis-ID's |
| v8 | Nee | Zelfgekozen bitindeling | Eigen 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
const re = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
console.log(re.test(id));
python
import uuid
try:
u = uuid.UUID(value)
print(u.version, u.variant)
except ValueError:
print('ongeldig')
java
try {
UUID u = UUID.fromString(value);
System.out.println(u.version());
} catch (IllegalArgumentException e) {
System.out.println("ongeldig");
}
csharp
if (Guid.TryParse(value, out var g))
Console.WriteLine("geldig");
sql
-- PostgreSQL 13+
SELECT value, value::uuid AS parsed
FROM raw_ids
WHERE value ~ '^[0-9a-f]{8}-';
Veelgestelde vragen
Waarom heeft een geldige waarde soms versie 0?
Dan gaat het bijvoorbeeld om de Nil UUID, waarbij alle bits op 0 staan, of om een waarde met een cijfer dat niet als versie bestaat. Het formaat klopt, maar de waarde hoort niet bij een versie.
Waarom zie ik alleen bij sommige versies een tijdstempel?
Alleen v1, v6 en v7 hebben een tijd in de waarde. v4 is volledig random en v3 en v5 zijn hashes van een naam, dus daar zit geen tijd in.
Wat gebeurt er boven de 200 regels?
Alleen de eerste 200 worden verwerkt en de rest wordt genegeerd. Splits grotere bestanden in delen.