3 回答
TA贡献2051条经验 获得超10个赞
当前,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
...确保您拥有规范版本1至5的规范UUID,并且是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
TA贡献1843条经验 获得超7个赞
正则表达式进行救援
/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test('01234567-9ABC-DEF0-1234-56789ABCDEF0');
或带括号
/^\{?[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\}?$/
TA贡献2065条经验 获得超14个赞
如果使用Node.js进行开发,建议使用一个名为Validator的软件包。它包含验证不同版本的UUID所需的所有正则表达式,此外还提供其他各种验证功能。
这是npm链接:验证程序
var a = 'd3aa88e2-c754-41e0-8ba6-4198a34aa0a2'
v.isUUID(a)
true
v.isUUID('abc')
false
v.isNull(a)
false
添加回答
举报