2017-07-15 162 views
0

我一直在試圖理解爲什麼在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是的,轉義花括號並沒有幫助,它給出了同樣的錯誤。 –

回答

1

問題似乎是您的第一個正則表達式中的, char。您可以在驗證程序source code中看到標籤已拆分爲,。通過UTSLing,我看不到對標籤中的轉義逗號的支持;這可能是項目作者的疏忽。我建議提交一個錯誤/功能請求。

+0

是的,我在項目回購上添加了[issue](https://github.com/go-validator/validator/issues/57)。任何其他方法的結構字段驗證? –