UUID正则表达式总是不匹配
package com.tarena.util;
import java.util.UUID;
public class VerifyUtil {
public static String randomUUID(){
UUID uuid = UUID.randomUUID();
return uuid.toString();
}
public static void main(String[] args){
String reg =
"/^[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}$/";
System.out.println(randomUUID().matches(reg));
}
}
用来检查UUID格式的,不知道为什么打印出来的的总是false
正则表达式应该没错吧
------解决方案--------------------
String reg = "/^[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}$/";
这是 JavaScript 中的正则表达式语法!
另外,你这个当中有个 BUG,UUID 是 16 个字节的唯一值,其用十六进制表示是 32 位。所以这个当中的 a-z 应该改为 a-f
在 Java 中要写成这样:
String reg = "^[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}$";
在 Java 中 ^ 和 $ 可以去掉不加。如果考虑像这个帖子 URL 中大写 UUID 的话,可以把 A-F 也加上去。