2015-04-01 58 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