isValidUUID static method

bool isValidUUID({
  1. String fromString = '',
  2. Uint8List? fromByteList,
  3. ValidationMode validationMode = ValidationMode.strictRFC4122,
  4. bool noDashes = false,
})

Validates the provided uuid to make sure it has all the necessary components and formatting and returns a bool You can choose to validate from a string or from a byte list based on which parameter is passed.

Implementation

static bool isValidUUID(
    {String fromString = '',
    Uint8List? fromByteList,
    ValidationMode validationMode = ValidationMode.strictRFC4122,
    bool noDashes = false}) {
  if (fromByteList != null) {
    fromString = UuidParsing.unparse(fromByteList);
  }
  // UUID of all 0s is ok.
  if (fromString == Namespace.NIL) {
    return true;
  }

  // If its not 36 characters in length, don't bother (including dashes).
  if (!noDashes && fromString.length != 36) {
    return false;
  }

  // If its not 32 characters in length, don't bother (excluding excluding).
  if (noDashes && fromString.length != 32) {
    return false;
  }

  // Make sure if it passes the above, that it's a valid UUID or GUID.
  switch (validationMode) {
    case ValidationMode.strictRFC4122:
      {
        var pattern = (noDashes)
            ? r'^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-8][0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$'
            : r'^[0-9a-f]{8}-[0-9a-f]{4}-[0-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$';
        final regex = RegExp(pattern, caseSensitive: false, multiLine: true);
        final match = regex.hasMatch(fromString.toLowerCase());
        return match;
      }
    case ValidationMode.nonStrict:
      {
        var pattern = (noDashes)
            ? r'^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-8][0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$'
            : r'^[0-9a-f]{8}-[0-9a-f]{4}-[0-8][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$';
        final regex = RegExp(pattern, caseSensitive: false, multiLine: true);
        final match = regex.hasMatch(fromString.toLowerCase());
        return match;
      }
    default:
      {
        throw Exception('`$validationMode` is an invalid ValidationMode.');
      }
  }
}