如何检查变量是否包含有效的UUID/GUID标识符?
我目前只对验证类型1和4感兴趣,但这不应该成为您回答的限制。
如何检查变量是否包含有效的UUID/GUID标识符?
我目前只对验证类型1和4感兴趣,但这不应该成为您回答的限制。
当前回答
如果您使用uuid包,这个包会带来一个布尔验证函数,它会告诉您uuid是否有效。
例子:
import { validate as isValidUUID } from 'uuid';
if (!isValidUUID(tx.originId)) {
return Promise.reject('Invalid OriginID');
}
其他回答
我向Apache Commons validator添加了一个UUID验证器。它还没有合并,但你可以在这里投票:
https://github.com/apache/commons-validator/pull/68
如果您使用uuid包,这个包会带来一个布尔验证函数,它会告诉您uuid是否有效。
例子:
import { validate as isValidUUID } from 'uuid';
if (!isValidUUID(tx.originId)) {
return Promise.reject('Invalid OriginID');
}
正则表达式来拯救
/^[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}\}?$/
我认为更好的方法是使用静态方法fromString来避免那些正则表达式。
id = UUID.randomUUID();
UUID uuid = UUID.fromString(id.toString());
Assert.assertEquals(id.toString(), uuid.toString());
另一方面
UUID uuidFalse = UUID.fromString("x");
抛出java.lang.IllegalArgumentException:无效UUID字符串:x
如果有人使用yup, JavaScript模式验证器库,此功能可以通过以下代码实现。
const schema = yup.object().shape({
uuid: yup.string().uuid()
});
const isValid = schema.isValidSync({uuid:"string"});