UUID(通用唯一识别码,Universally Unique Identifier)是 128 位的标识符,通常写成 36 个字符的 8-4-4-4-12 十六进制形式,例如 550e8400-e29b-41d4-a716-446655440000,用于在不依赖中央分配的情况下生成几乎不会重复的 ID。下面说明核对结果的方法。
UUID校验规则
校验一个字符串是否为合法 UUID,可以用正则 ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$,或在 Python 中用 uuid.UUID(s) 尝试解析,失败会抛出 ValueError。
示例
输入:版本 4(随机)
生成结果:4a6f2b2e-74e2-41ae-8337-fffa16645060
说明:第 13 位“4”表示版本 4,第 17 位“8”属于 8/9/a/b 之一,表示 RFC 变体;共 122 位随机。
常见误区
- 误区:UUID 绝对不会重复——只是概率极低,版本 4 生成 2^61 个左右才有约一半概率出现一次碰撞
- 误区:GUID 和 UUID 不同——两者是同一种东西
- 误区:去掉连字符就不是 UUID——只是写法不同
- 误区:版本 4 可以当随机密码——它的格式和随机位数都不适合
Python 示例
下面是用 Python 实现的写法,可以按需要修改:
import uuid
print(uuid.uuid4()) # 随机
print(uuid.uuid5(uuid.NAMESPACE_DNS, 'example.com')) # 基于名称
print(uuid.uuid4().hex) # 无连字符
JavaScript 示例
下面是用 JavaScript 实现的写法,可以按需要修改:
// 现代浏览器与 Node.js 19+
const id = crypto.randomUUID();
console.log(id); // 例如 3b241101-e2bb-4255-8caf-4136c566a962
console.log(id.replace(/-/g, ''));
本站的UUID生成器工具可以直接在网页中使用,无需安装,适合快速得到和核对结果。
常见问题
【UUID 能做数据库主键吗?】可以。关心写入性能时优先选择时间有序的版本 7。
【UUID 区分大小写吗?】不区分,规范建议输出小写,比较时忽略大小写。
【怎样从 UUID 看出生成时间?】版本 1、6、7 包含时间戳可以还原,版本 4 是纯随机的,没有时间信息。
文中示例可以在本站对应工具中核对。
标签: 实用工具