一、概述
在本教程中,我们将了解一些在Java 中验证UUID(通用唯一标识符)字符串的方法。
我们将介绍一种UUID类方法,然后我们将使用正则表达式。
2. 使用UUID.fromString()
检查String是否为UUID的最快方法之一是尝试使用属于UUID类的静态方法fromString对其进行映射。让我们试一试:
@Test
public void whenValidUUIDStringIsValidated_thenValidationSucceeds() {
String validUUID = "26929514-237c-11ed-861d-0242ac120002";
Assertions.assertEquals(UUID.fromString(validUUID).toString(), validUUID);
String invalidUUID = "invalid-uuid";
Assertions.assertThrows(IllegalArgumentException.class, () -> UUID.fromString(invalidUUID));
}在上面的代码片段中,我们可以看到,如果我们尝试验证的字符串不代表UUID,则会抛出IllegalArgumentException。但是,fromString方法将返回`00000001-0001-0001-0001-000000000001` 用于字符串,例如`1-1-1-1-1`。所以我们已经包含了字符串比较来处理这种情况。
有些人可能会争辩说,使用异常不是流控制的好习惯,所以我们将看到实现相同结果的不同方法。
3. 使用正则表达式
验证UUID 的另一种方法是使用与格式完全匹配的正则表达式。
首先,我们需要定义一个用于匹配字符串的Pattern。
Pattern UUID_REGEX =
Pattern.compile("^[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}$");然后,我们可以使用此模式尝试将其与字符串匹配,以验证它是否是UUID:
@Test
public void whenUUIDIsValidatedUsingRegex_thenValidationSucceeds() {
Pattern UUID_REGEX =
Pattern.compile("^[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}$");
Assertions.assertTrue(UUID_REGEX.matcher("26929514-237c-11ed-861d-0242ac120002").matches());
Assertions.assertFalse(UUID_REGEX.matcher("invalid-uuid").matches());
}4。结论
在本文中,我们学习了如何使用正则表达式或利用UUID类的静态方法来验证UUID 字符串。
0 评论