RFC 4122 是否支持不带连字符的 UUID?

vig*_*pie -2 uuid rfc rfc4122

据我了解,UUID 包含一组字符,根据 RFC 4122,这些字符分为 5 组,采用 8-4-4-4-12 字符模式。示例:123e4567-e89b-12d3-a456-42661417400

我正在使用 Google 的流行库来解析 UUID ( https://github.com/google/uuid )。该库特别解析两者123e4567-e89b-12d3-a456-42661417400并且123e4567e89b12d3a456426614174000没有任何错误。

我应该按照 RFC 4122 解析潜在的 UUID。但我不确定 RFC 4122 是否认为123e4567e89b12d3a456426614174000123e4567-e89b-12d3-a456-42661417400. 我没有在官方文档中找到任何说明未连字符(或破折号)的 UUID 是否有效的材料。

请分享你的看法,谢谢。

Ste*_*ich 5

RFC 4122 在第 3 节中将 UUID 的字符串表示形式定义为:

  The formal definition of the UUID string representation is
  provided by the following ABNF [7]:

  UUID                   = time-low "-" time-mid "-"
                           time-high-and-version "-"
                           clock-seq-and-reserved
                           clock-seq-low "-" node
Run Code Online (Sandbox Code Playgroud)

基于此,任何不带连字符的 UUID 都不符合标准。

...该库特别解析 123e4567-e89b-12d3-a456-42661417400 和 123e4567e89b12d3a456426614174000 没有任何错误。

它被明确记录为能够解析 UUID 的非标准表示形式。从文档中引用:

func Parse
func Parse(s string) (UUID, error)
Parse 将 s 解码为 UUID 或返回错误。标准UUID 形式xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 和 urn:uuid:xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx以及 Microsoft 编码 {xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} 和原始十六进制编码: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx