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 .]*$"` 
} 

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

+0

另外,我试着逃避那个“。”。在正则表达式,它没有给我错误“未知标签”,但它只是绕过验证。这可能是一个可能的错误。 GitHub [issue](https://github.com/go-validator/validator/issues/56) –

+0

您是否尝试过转义{}? 'regexp =^[a-zA-Z。] \ {1,100 \} $' –

+0

@LukasIsselbächer是的,转义花括号并没有帮助,它给出了同样的错误。 –

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

+0

是的,我在项目回购上添加了[issue](https://github.com/go-validator/validator/issues/57)。任何其他方法的结构字段验证? –