我如何在 groovy 中对特定格式的字段进行验证

发布于 2024-11-07 08:39:21 字数 115 浏览 1 评论 0原文

我有 Domain 类,对于 String 类型的特定字段,它接受字母数字值,我需要以它应该仅接受 AB12-QW-1 (或)XY-12 值的格式进行验证。我如何验证该字段。

请提出解决方案。 谢谢。

I have Domain class and in that for a particular field of type String, it accepts alphanumeric values,i need a validation in the format it should accept only AB12-QW-1 (or) XY-12 values. how can i validate the field.

Please suggest the solution.
Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

缘字诀 2024-11-14 08:39:21

假设您的域类如下所示

class Foo {
  String bar
}

如果您可以定义仅匹配合法值的正则表达式,则可以使用以下方法应用约束:

class Foo {
  String bar
  constraints = {
    bar(matches:"PUT-YOUR-REGEX-HERE")
  }
}

或者,如果您可以轻松列出所有合法值,则可以使用:

class Foo {
  String bar
  constraints = {
    bar(inList:['AB12-QW-1', 'XY-12'])
  }
}

如果这些解决方案都不起作用,那么您可能需要编写一个自定义验证器方法

Assume your domain class looks like this

class Foo {
  String bar
}

If you can define a regex that matches only the legal values, you can apply the constraint using:

class Foo {
  String bar
  constraints = {
    bar(matches:"PUT-YOUR-REGEX-HERE")
  }
}

Alternatively, if you can easily list all the legal values, you can use:

class Foo {
  String bar
  constraints = {
    bar(inList:['AB12-QW-1', 'XY-12'])
  }
}

If neither of these solutions will work, then you'll likely need to write a custom validator method

乖乖 2024-11-14 08:39:21

您可以使用自定义验证器

class YourDomain {
  String code

  static constraints = {
    code( validator: {
      if( !( it in [ 'AB12-QW-1', 'XY-12' ] ) ) return ['invalid.code']
    })
  }
}

但是,您对代码的解释valid 有点模糊,所以您可能需要其他东西来代替 in 调用

[编辑]

假设您的两个字符串仅显示字母或数字的占位符,则以下正则表达式验证器应该 工作:

constraints = {
  code( matches:'[A-Z]{2}[0-9]{2}-[A-Z]{2}-[0-9]|[A-Z]{2}-[0-9]{2}' )
}

如果失败,将返回错误 yourDomain.code.matches.invalid

You could use a custom validator:

class YourDomain {
  String code

  static constraints = {
    code( validator: {
      if( !( it in [ 'AB12-QW-1', 'XY-12' ] ) ) return ['invalid.code']
    })
  }
}

However, your explanation of what codes are valid is a bit vague, so you probably want something else in place of the in call

[edit]

Assuming your two strings just showed placeholders for letters or numbers, the following regexp validator should work:

constraints = {
  code( matches:'[A-Z]{2}[0-9]{2}-[A-Z]{2}-[0-9]|[A-Z]{2}-[0-9]{2}' )
}

And that will return the error yourDomain.code.matches.invalid if it fails

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文