Coder Perfect

How can I know if a UUID/GUID is valid?


How can I tell if a variable includes a valid UUID/GUID?

I’m currently only interested in validating kinds 1 and 4, but this should not limit your responses.

Asked by Marek Sebera

Solution #1

Currently, UUID’s are as specified in RFC4122. An often neglected edge case is the NIL UUID, noted here. The following regex takes this into account and will return a match for a NIL UUID. See below for a UUID which only accepts non-NIL UUIDs. Both of these solutions are for versions 1 to 5 (see the first character of the third block).

As a result, validating a UUID…


…ensures you have an RFC4122-compliant canonically formatted UUID that is Version 1 through 5 and the proper Variant.

Braces and are not canonical terms. They are a byproduct of certain systems and applications.

It’s simple to adapt the above regex to fit the original question’s requirements.

HINT: regex group/captures

To avoid matching NIL UUID:


Answered by Gambol

Solution #2

regex saves the day


or with brackets


Answered by ryanb

Solution #3

Here are the corresponding regexes for checking or validating a certain UUID version.

The first character of the third group represents the version number: [VERSION NUMBER][0-9A-F]3: [VERSION NUMBER][0-9A-F]3:

Answered by Ivan Gabriele

Solution #4

Validator is a package that is recommended if you are using Node.js for development. It comes with all of the regexes needed to validate various versions of UUIDs, as well as a variety of other validation methods.

The npm link is here: Validator

var a = 'd3aa88e2-c754-41e0-8ba6-4198a34aa0a2'

Answered by Neeraj Sharma

Solution #5

with some changes thanks to @usertatha

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;

Answered by Souhaieb

Post is based on