【问题标题】:Go validator.v2 gives error "unknown tag" for regexpGo validator.v2 为正则表达式提供错误“未知标签”
【发布时间】:2023-03-25 02:08:01
【问题描述】:

我一直试图理解为什么在 golang 中使用 validator.v2 包时某些正则表达式会给我一个错误“未知标签”。它适用于某些正则表达式,但不适用于其中包含“{}”的某些表达式,当我使用 validator.Validate() 时,它会在运行时给我一个错误“未知标签”。

代码如下:

type Company struct {
    Name string `validate:"regexp=^[a-zA-Z .]{1,100}$"` 
}

这在运行时给了我以下错误:

Name: unknown tag

但是这个正则表达式工作得很好

type Company struct {
    Name string `validate:"regexp=^[a-zA-Z .]*$"` 
}

我使用大括号是因为我想对字符串进行长度限制。可能还有其他方法可以做到这一点,但我觉得正则表达式是要走的路,并且更容易将它与表达式中的其他规则一起使用。

【问题讨论】:

  • 另外,我尝试转义那个“。”在正则表达式中,它没有给我错误“未知标签”,但它只是绕过了验证。这可能是一个可能的错误。 GitHubissue
  • 您是否尝试过转义 {}? regexp=^[a-zA-Z .]\{1,100\}$
  • @LukasIsselbächer 是的,转义大括号没有帮助,它给出了同样的错误。

标签: regex validation go


【解决方案1】:

问题似乎是您的第一个正则表达式中的 , 字符。您可以在验证器source code 中看到标签在, 上拆分。通过 UTSLing,我发现标签中不支持转义逗号;这可能是项目作者的疏忽。我建议提交错误/功能请求。

【讨论】:

  • 是的,我在项目仓库中添加了issue。结构字段验证还有其他方法吗?
猜你喜欢
  • 1970-01-01
  • 2022-09-21
  • 2011-11-09
  • 1970-01-01
  • 2019-08-04
  • 2010-09-23
  • 2016-04-10
  • 2015-09-15
  • 1970-01-01
相关资源
最近更新 更多