2015-04-01 59 views
0

我遇到了regx.Ismatch問題。我需要驗證一個字符串以這種格式,@"[O]-[0-9]{8}-[0-9]{5}-[0-9]-[0-9]-[0-9]",我使用此代碼:驗證Regex.IsMatch的問題

if (!Regex.IsMatch(vm.CadastralNumber, @"[O]-[0-9]{8}-[0-9]{5}-[0-9]-[0-9]-[0-9]")) 
    ModelState.AddModelError("CadastralNumber", "Prefix should be O, or the format is not correct"); . 

但是我有一個問題,這種格式後,我需要的用戶不要讓寫更多的數字,如-[0-9]-[0-9]-[0-9]-[0-9]。它永遠不會停止,我需要用戶首先寫出我給出的格式,並且不要寫更多 - 。任何幫助?

+1

LINQ在哪裏? – xanatos 2015-04-01 09:33:22

回答

0

將其寫爲@"^[O]-[0-9]{8}-[0-9]{5}-[0-9]-[0-9]-[0-9]$"以使正則表達式匹配字符串的開始(^)和結束($)。

0

您必須使用錨點^(字符串的開頭)和$(字符串的結尾)。你也可以使用一點清理正則表達式:

@"^O-\d{8}-\d{5}(?:-\d){3}$" 
+1

請注意,C#中的'\ d'匹配像''這樣的非阿拉伯數字。 – xanatos 2015-04-01 09:57:49