当前位置:  开发笔记 > 编程语言 > 正文

什么是有效的UUID?

如何解决《什么是有效的UUID?》经验,为你挑选了1个好方法。

我生成UUID,并在我的代码中对正则表达式进行有效; 我刚遇到困扰我的问题

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

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

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

这是验证UUID的代码; 我从这篇文章中复制了正则表达式

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发布到在线验证器上,它说好了

这是我的系统信息

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是正确还是错误?谁相信,发电机或验证



1> JacksOnF1re..:

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

基本上,如果生成id UUID.randomUUID(),则无需验证它们.如果你好奇他们可能会被手动操作.你可以使用UUID.fromString(yourUUID),赶上IllegalArgumentExcepetionNumberFormatException可能抛出.

抛出IllegalArgumentExcepetion:

如果name不符合toString()中描述的字符串表示

此外,如果UUID已正确转换,您可以在后面检查

UUID id = UUID.fromString(yourUUID);
if(id.toString().equals(yourUUID){
    //success
}

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有