我一直在努力理解为什么一些正则表达式在使用 validator.v2 时给我一个错误“Unknown tag”在 golang 中打包。它适用于某些正则表达式,但不适用于其中包含“{}”的某些正则表达式,并且当我使用 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 .]*$"`
}
我使用大括号是因为我想对字符串施加长度限制。可能有其他方法可以做到这一点,但我觉得正则表达式是可行的方法,并且更容易将它与表达式中的其他规则一起使用。
最佳答案
问题似乎是第一个正则表达式中的 ,
字符。在验证器中可以看到source code标记在 ,
上拆分。通过 UTSLing,我发现标签中不支持转义逗号;这可能是项目作者的疏忽。我建议提交错误/功能请求。
关于regex - Go validator.v2 为正则表达式给出错误 "unknown tag",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45113907/