Go validator.v2给出正则表达式的错误“未知标签”
问题描述:
我一直在试图理解为什么在golang中使用validator.v2包时,为什么一些正则表达式给我一个错误“未知标签”。它适用于一些正则表达式,但不适用于其中有“{}”的一些内容,并且当我使用validator.Validate()时,它在运行时会给我一个错误“unknown tag”。Go validator.v2给出正则表达式的错误“未知标签”
下面的代码:
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 .]*$"`
}
我使用大括号,因为我想放在字符串上的长度限制。还有其他的方法可以做到这一点,但我觉得正则表达式是一种可行的方式,并且更容易与正则表达式中的其他规则一起使用。
答
问题似乎是您的第一个正则表达式中的,
char。您可以在验证程序source code中看到标签已拆分为,
。通过UTSLing,我看不到对标签中的转义逗号的支持;这可能是项目作者的疏忽。我建议提交一个错误/功能请求。
+0
是的,我在项目回购上添加了[issue](https://github.com/go-validator/validator/issues/57)。任何其他方法的结构字段验证? –
另外,我试着逃避那个“。”。在正则表达式,它没有给我错误“未知标签”,但它只是绕过验证。这可能是一个可能的错误。 GitHub [issue](https://github.com/go-validator/validator/issues/56) –
您是否尝试过转义{}? 'regexp =^[a-zA-Z。] \ {1,100 \} $' –
@LukasIsselbächer是的,转义花括号并没有帮助,它给出了同样的错误。 –