gpt4 book ai didi

java - 针对正则表达式验证 null

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

我正在尝试使用以下正则表达式验证 Java 中的字符串,看看它是否与 randomUUID 格式匹配

^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$

现在,这可以正常工作并拾取无效字符串等 - 但是,如果我将 null 字符串传递给正则表达式,它会返回 true,因此当我对 Pattern 注释执行验证时,不会报告任何约束违规。这是预期的行为吗,因为字符串为空,所以它不执行任何验证?

作为解决这个问题的方法,在我用 Pattern 注释注释的 getter 方法上,我使用了这个

return id != null ? id : "null"

这可行,但对我来说似乎有点……hacky:)

最佳答案

如果要排除空值,请使用 a 'not null' annotation ,例如@NotNull

<小时/>

如果参数为 null,PatternValidator 返回 true(恕我直言,这是一个奇怪的选择);它在源代码中这么说。我见过不同的版本,他们都这样做了,所以它确实是契约(Contract)的一部分(并且应该更好地记录下来)。

public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
if ( value == null ) {
return true;
}
Matcher m = pattern.matcher( value );
return m.matches();
}

关于java - 针对正则表达式验证 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19867758/

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