gpt4 book ai didi

java - 根据输入值更改Java Validator的@Pattern Regex

转载 作者:行者123 更新时间:2023-12-02 10:30:32 25 4
gpt4 key购买 nike

我正在使用 Java 的 Validator 类来验证 Spring Object 类中的一些输入字段。我正在验证 URI,它们可以采用以下任一格式:http:/myURL/uri 或“readFromURI.v1”。最初,我只是验证第一部分,所以我的对象类有:

@Pattern(regexp="[\\w\\s.,;:*&@(){}+-=?/|!\\[\\]%#$~]{0,512}", message="incorrect format")
private String URI;

现在,如果用户在我的应用程序中选择一个复选框,他们将以第二种格式输入值,因此我创建了一个新的正则表达式:

@Pattern.List({
@Pattern(regexp="[\\w\\s.,;:*&@(){}+-=?/|!\\[\\]%#$~]{0,512}", message="incorrect format"),
@Pattern(regexp="^\"(Create|Read|Update|Delete)[a-zA-Z]+.*vd+\"${0,512}", message="incorrect format")
})
private String URI;

第二部分的正则表达式可能是错误的,我可能稍后会问这个问题。但现在每当我验证任一格式时,这两个条件都会失败。所以我假设我编写它的方式是尝试应用两个正则表达式。我如何根据值选择一个?如果有帮助的话,该值字段位于同一个类中:

private String URI;
private boolean useHttp; //if true, validate using [\\w\\s.,;:*&@(){}+-=?/|!\\[\\]%#$~]{0,512}

最佳答案

您应该编写一个自定义 validator ,如下所述 here :

  1. 创建新注释 CustomConstraint注释为 @Constraint(validatedBy = CustomConstraintValidator.class)
  2. 上课 CustomConstraintValidator实现ConstraintValidator<CustomConstraint, YourType>
  3. 注释 YourType@CustomConstraint
  4. CustomConstraintValidator 中进行验证取决于您的 bean 值。

您的验证将能够检查您想要测试的任何字段(我不记得每个字段级别注释通过后是否通过了类级别约束,因此您可能必须检查 URI 是否不是 null ) .

关于java - 根据输入值更改Java Validator的@Pattern Regex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53638794/

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