424 Stimmen

Wie prüfe ich eine gültige UUID/GUID?

Wie kann man prüfen, ob eine Variable einen gültigen UUID/GUID-Bezeichner enthält?

Ich bin derzeit nur an der Validierung der Typen 1 und 4 interessiert, aber das sollte keine Einschränkung für Ihre Antworten sein.

30voto

Souhaieb Punkte 519

Dank an @usertatha mit einigen Änderungen

function isUUID ( uuid ) {
    let s = "" + uuid;

    s = s.match('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$');
    if (s === null) {
      return false;
    }
    return true;
}

15voto

Wolf Punkte 9164

Neben Gambols Antwort die die Aufgabe erfüllen werden in fast allen Fällen In allen bisherigen Antworten wurde übersehen, dass die gruppierte Formatierung (8-4-4-4-12) nicht zwingend erforderlich ist, um GUIDs in Text kodieren . Sie wird sehr häufig verwendet, aber natürlich kann auch eine einfache Kette von 32 hexadezimalen Ziffern gültig sein. [1] regex erweitern. :

/^[0-9a-f]{8}-?[0-9a-f]{4}-?[1-5][0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$/i

[1] Die Frage bezieht sich auf siehe ing variabel s, also sollten wir auch die benutzerunfreundliche Form einbeziehen.

11voto

Evan Edwards Punkte 101

Alle bisher veröffentlichten typspezifischen Regexe scheitern am "Typ 0" Nil UUID, definiert in 4.1.7 des RFC als:

Die nil UUID ist eine spezielle Form der UUID, bei der alle 128 Bits auf Null gesetzt sind: 00000000-0000-0000-0000-000000000000

Um Wolfs Antwort abzuwandeln:

/^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-5][0-9a-f]{3}-?[089ab][0-9a-f]{3}-?[0-9a-f]{12}$/i

Oder, um einen "Typ 0" ohne alle Nullen richtig auszuschließen, haben wir das Folgende (Dank an Luke):

/^(?:[0-9a-f]{8}-?[0-9a-f]{4}-?[1-5][0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i

10voto

wellington Punkte 61

Wenn Sie das uuid-Paket verwenden, können Sie das validate importieren und die id übergeben

const { v4: uuidv4, validate } = require('uuid');

const { id } = request.params;
validate(id) ? true : false;

6voto

NS23 Punkte 625

Wenn jemand die Ja, JavaScript schema validator library, Diese Funktionalität kann mit folgendem Code erreicht werden.

const schema = yup.object().shape({
   uuid: yup.string().uuid()
 });
 const isValid = schema.isValidSync({uuid:"string"});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X