如何测试有效的 UUID/GUID?
2022-08-29 23:39:03
如何检查变量是否包含有效的 UUID/GUID 标识符?
我目前只对验证类型1和4感兴趣,但这不应该成为你答案的限制。
如何检查变量是否包含有效的 UUID/GUID 标识符?
我目前只对验证类型1和4感兴趣,但这不应该成为你答案的限制。
目前,UUID 在 RFC4122 中指定。一个经常被忽视的边缘情况是NIL UUID,这里指出。以下正则表达式会考虑到这一点,并将返回 NIL UUID 的匹配项。请参阅下文,了解仅接受非 NIL UUID 的 UUID。这两种解决方案都适用于版本 1 到 5(请参阅第三个块的第一个字符)。
因此,要验证 UUID...
/^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i
...确保您具有规范格式的 UUID,该 UUID 为版本 1 到 5,并且是 RFC4122 中的适当变体。
注意:大括号,不是规范的。它们是某些系统和用法的产物。{
}
易于修改上述正则表达式以满足原始问题的要求。
提示:正则表达式组/捕获
要避免匹配 NIL UUID,请执行以下操作:
/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i
如果要检查或验证特定的 UUID 版本,下面是相应的正则表达式。
请注意,唯一的区别是版本号,这在 UUID 4122 RFC 的章节中进行了说明。
4.1.3. Version
版本号是第三组的第一个字符:[VERSION_NUMBER][0-9A-F]{3}
UUID v1 :
/^[0-9A-F]{8}-[0-9A-F]{4}-[1][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i
UUID v2 :
/^[0-9A-F]{8}-[0-9A-F]{4}-[2][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i
UUID v3 :
/^[0-9A-F]{8}-[0-9A-F]{4}-[3][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i
UUID v4 :
/^[0-9A-F]{8}-[0-9A-F]{4}-[4][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i
UUID v5 :
/^[0-9A-F]{8}-[0-9A-F]{4}-[5][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i