验证Regex.IsMatch的问题

时间:2015-04-01 09:30:37

标签: c# .net regex

我对regx.Ismatch有疑问。我需要以这种格式验证字符串@"[O]-[0-9]{8}-[0-9]{5}-[0-9]-[0-9]-[0-9]",我正在使用此代码:

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]。它永远不会停止,我需要用户只写我先给出的格式,不要写更多 - 。有什么帮助吗?

2 个答案:

答案 0 :(得分:0)

将其写为@"^[O]-[0-9]{8}-[0-9]{5}-[0-9]-[0-9]-[0-9]$",使正则表达式匹配字符串的开头(^)和结束($)。

答案 1 :(得分:0)

您必须使用锚点^(字符串的开头)和$(字符串的结尾)。您还可以使用更清洁的正则表达式:

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