gpt4 book ai didi

java - 什么是有效的 UUID?

转载 作者:行者123 更新时间:2023-12-01 23:01:47 25 4
gpt4 key购买 nike

我生成 UUID,并根据代码中的正则表达式验证它们;我刚刚遇到了令我困惑的问题

这是生成 UUID 的代码(在 mongodb 上下文中)

import java.util.UUID;
... ...

Document setOnInsert = new Document(Params.sender, UUID.randomUUID())
.append(Params.userDevice, userDevice)
.append(Params.hostId,"");

这是验证UUID的代码;我从这个 post 复制了正则表达式

static final Pattern UUID = Pattern.compile("([0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})");

public static boolean isUUID(String uuid){
if(uuid == null){
return false;
}else{
return UUID.matcher(uuid).matches();
}
}

下面是我遇到问题的 2 个 UUID

aa4aaa2c-c6ca-d5f5-b8b2-0b5c78ee2cb7
b24dd64c-de6b-5bf6-6283-aa2167cc93a7

这两个UUID是由上述代码生成的;在我最近的调试中,验证方法(isUUID())判断它们无效;但我将这些 UUID 发布到网上 validator ,它说好的

这是我的系统信息

wjz@bj:~$ java -version 
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
wjz@bj:~$
wjz@bj:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.1 LTS
Release: 16.04
Codename: xenial
wjz@bj:~$

一些背景:我一直在研究jdk 1.8.0_111;这些UUID当时已经生成,没有任何问题。然后我今天升级到1.8.0_121,遇到了这个问题...

所以我的问题是:上面提到的UUID是正确还是错误?相信谁,生成器还是验证

最佳答案

我的建议是,不要重新发明轮子。

基本上,如果您使用 UUID.randomUUID() 生成 id,则无需验证它们。如果您无论如何都好奇它们可能会被手动操纵。您只需使用 UUID.fromString(yourUUID) 并捕获可能抛出的 IllegalArgumentExcepetionNumberFormatException

抛出IllegalArgumentExcepetion:

If name does not conform to the string representation as described in toString()

此外,您可以使用

检查 UUID 是否已正确转换
UUID id = UUID.fromString(yourUUID);
if(id.toString().equals(yourUUID){
//success
}

关于java - 什么是有效的 UUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41737174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com