UUID 验证工具 - 在线 UUID 格式检查与版本识别
免费在线 UUID 验证工具,支持 UUID 格式检查、版本识别(v1/v3/v4/v5)、结构分解。符合 RFC 4122 标准,无需注册。
什么是 UUID 验证器?
UUID(通用唯一标识符)验证器用于检查给定字符串是否符合 RFC 4122 标准。UUID 是 128 位标识符,广泛用于分布式系统中的唯一 ID 生成。我们的在线 UUID 验证工具可即时检查 UUID 格式是否正确、识别 UUID 版本,并将结构分解为各个组成部分——所有操作均在浏览器中完成,不会将数据发送到任何服务器。
如何使用 UUID 验证器
输入 UUID
将 UUID 字符串粘贴或输入到输入框中。支持标准格式(带连字符)、URN 格式(urn:uuid:...)和大括号格式。
点击验证
点击验证按钮或直接输入——工具会自动根据 RFC 4122 标准检查 UUID 的格式、版本位和变体位。
查看结果
查看 UUID 是否有效、属于哪个版本,以及详细的结构分解和高亮显示的各段信息。
生成新 UUID
需要 UUID?点击生成按钮,使用浏览器的 crypto.randomUUID() API 创建加密安全的 UUID v4。
UUID 常见使用场景
数据库主键
UUID 作为分布式数据库(如 PostgreSQL、MongoDB、Cassandra)中的全局唯一主键,可在不产生 ID 冲突的情况下合并数据。
API 请求追踪
为每个 API 请求分配 UUID,实现微服务架构下的分布式追踪,支持端到端请求关联和调试。
文件与资源命名
为上传资源生成唯一文件名,防止云存储系统(如 S3)或 CDN 缓存层中的命名冲突。
会话与令牌生成
UUID v4 广泛用于生成会话 ID、CSRF 令牌和一次性身份验证码。
UUID 结构与 RFC 4122 详解
UUID 是一个 128 位的数字,格式为 32 个十六进制数字,分为五组:8-4-4-4-12。每段根据 UUID 版本编码不同的信息。RFC 4122 标准定义了 UUID 的构造方式,包括版本和变体字段的位级布局。
UUID 格式字段
| 字段 | 长度 | 说明 |
|---|---|---|
time_low | 8 hex | 时间戳的低 32 位(v1)或随机数据(v4)。 |
time_mid | 4 hex | 时间戳的中间 16 位或随机数据。 |
time_hi_and_version | 4 hex | 高 12 位:版本号(第 13-16 位)。决定 UUID 生成方法。 |
clock_seq_and_variant | 4 hex | 第 17-18 位:变体(10xx = RFC 4122)。定义 UUID 布局标准。 |
node | 12 hex | 48 位节点标识符——通常是 MAC 地址(v1)或随机位(v4)。 |
UUID 版本一览
| 版本 | 生成方式 |
|---|---|
| v1 | 基于时间(自 1582-10-15 起的 100ns 间隔)+ MAC 地址。 |
| v3 | 基于名称,使用 MD5 哈希。相同命名空间+名称产生相同 UUID。 |
| v4 | 随机生成。Web 开发中最常用。约 122 位随机数。 |
| v5 | 基于名称,使用 SHA-1 哈希。比 v3 具有更好的碰撞抵抗力。 |
| Nil | 所有位设为零(00000000-0000-0000-0000-000000000000)。特殊保留值。 |
了解 UUID 结构有助于调试。例如,如果您在日志中看到 UUID v1,可以从 time_low 和 time_mid 字段提取创建时间戳。UUID v4 为一般用途提供最佳随机性,而 v3/v5 适合需要从已知输入生成确定性、可重现 ID 的场景。
如何在代码中验证 UUID
学习如何在主流编程语言中验证 UUID。每个示例同时展示验证(检查字符串是否为合法 UUID)和生成(创建新 UUID)的代码。
JavaScript
// Validate UUID
function isValidUUID(str) {
const regex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
return regex.test(str);
}
// Generate UUID v4
function generateUUID() {
return crypto.randomUUID();
}Python
import uuid
# Validate UUID
def is_valid_uuid(s):
try:
uuid.UUID(s)
return True
except ValueError:
return False
# Generate UUID v4
new_uuid = uuid.uuid4()Java
import java.util.UUID;
// Validate UUID
public static boolean isValidUUID(String s) {
try {
UUID.fromString(s);
return true;
} catch (IllegalArgumentException e) {
return false;
}
}
// Generate UUID v4
UUID uuid = UUID.randomUUID();Go
import "github.com/google/uuid"
// Validate UUID
func isValidUUID(s string) bool {
_, err := uuid.Parse(s)
return err == nil
}
// Generate UUID v4
id := uuid.New()UUID 验证常见问题
UUID 看起来正确却被拒绝
检查是否粘贴了不可见字符(零宽空格、换行符等)。同时验证版本半字节(第13个字符)是否为 1-5,变体半字节(第17个字符)是否为 8、9、a 或 b。
大小写混淆
UUID 十六进制数字根据 RFC 4122 不区分大小写——大写(A-F)和小写(a-f)均有效。我们的工具接受两者并自动标准化。
带/不带连字符的 UUID
标准 UUID 格式包含 4 个连字符(8-4-4-4-12)。32 个字符的无连字符十六进制字符串实际上是十六进制表示,而非 UUID。我们的工具接受带连字符的标准格式。
URN 格式 UUID
带 'urn:uuid:' 前缀的 UUID 在 RFC 4122 中是合法的。我们的工具在验证时自动去除 URN 前缀,也支持大括号格式。
UUID 验证常见问题解答
什么是 UUID?
UUID(通用唯一标识符)是一个 128 位的数字,用于在计算机系统中唯一标识信息。UUID 由开放软件基金会(OSF)标准化,是分布式计算环境(DCE)的一部分,并记录在 RFC 4122 中。它们被设计为在没有中央协调机构的情况下在空间和时间上全局唯一。
UUID 和 GUID 有什么区别?
UUID(通用唯一标识符)和 GUID(全局唯一标识符)本质上是相同的。GUID 是微软对 UUID 标准的实现。两者都是 128 位标识符,格式相同(8-4-4-4-12 十六进制数字)。在实践中,这两个术语在软件开发中可互换使用。
UUID 有多少个版本?
RFC 4122 定义了 5 个标准 UUID 版本:版本 1(基于时间,使用 MAC 地址和时间戳)、版本 2(DCE 安全,很少使用)、版本 3(基于名称,使用 MD5 哈希)、版本 4(随机,最常用)和版本 5(基于名称,使用 SHA-1 哈希)。此外,'Nil UUID'(全零)是一个特殊的保留值。版本 4 在现代 Web 开发中使用最广泛。
UUID 是否保证唯一?
UUID 被设计为'实际上唯一'而非'绝对唯一'。对于 UUID v4(随机),碰撞概率约为 2^122 分之一,极其微小。通俗地说:您需要每秒生成 10 亿个 UUID 并持续大约 100 年,才有 50% 的概率遇到一次碰撞。对于所有实际用途,UUID 可以被视为唯一的。
如何检查 UUID 是否有效?
您可以使用我们的免费在线 UUID 验证工具来即时检查任何 UUID 字符串。只需将 UUID 粘贴到输入框中并点击验证。该工具会根据 RFC 4122 检查格式(8-4-4-4-12 十六进制数字)、版本位(必须为 1-5)和变体位(必须为 8、9、a 或 b)。您也可以使用正则表达式或 UUID 解析库以编程方式验证 UUID。
正确的 UUID 格式是什么?
标准 UUID 格式是 32 个十六进制数字,以 5 组形式显示,用连字符分隔:xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx。'M' 表示 UUID 版本(1-5),'N' 表示变体(8、9、a 或 b 表示 RFC 4122)。示例:550e8400-e29b-41d4-a716-446655440000。十六进制数字可以大写或小写。可选表示形式包括 URN 格式(urn:uuid:...)和大括号格式。
何时应该使用 UUID 而不是自增 ID?
当您需要跨分布式系统的全局唯一标识符时、合并多个来源的数据时、在 URL 或 API 中暴露 ID 时(出于安全考虑),或者当离线客户端需要生成 ID 时,请使用 UUID。自增 ID 更适合简单的单数据库应用程序,其中顺序排序很重要且存储空间有限。
可以免费在线生成 UUID 吗?
当然可以!我们的 UUID 验证工具包含生成按钮,使用浏览器的 crypto.randomUUID() API 创建加密安全的 UUID v4 值。不会将任何数据发送到服务器——UUID 完全在您的浏览器中生成。您可以免费生成任意数量的 UUID,无需注册。
UUID 碰撞的概率是多少?
对于 UUID v4(随机),碰撞概率可以使用生日问题公式计算:p ≈ n²/(2×2^122),其中 n 是生成的 UUID 数量。要有 50% 的碰撞机会,您需要生成约 2.7×10^18 个 UUID。以每秒 10 亿个的速度,大约需要 86 年。对于所有实际用途,UUID v4 碰撞不会发生。
应该在数据库中使用 UUID 作为主键吗?
UUID 作为主键有利有弊。优点:全局唯一,支持分布式 ID 生成,便于合并数据。缺点:比整数大(16 字节 vs 4-8 字节),由于随机性可能导致 B 树索引碎片化,可读性较差。如果您的数据库支持,考虑使用 ULID 或 UUID v7(时间排序)以获得更好的数据库性能。
公开分享 UUID 安全吗?
UUID v4 通常可以安全地公开分享,因为它不包含任何识别信息——只是随机位。但是,UUID v1 包含生成机器的 MAC 地址和时间戳,可能被用于追踪。对于面向公众的使用,请始终优先选择 UUID v4,它只提供随机性。我们的工具使用 crypto.randomUUID() 来安全、私密地生成 UUID。