C# 如何用正则表达式验证mvc中的CNIC no

C# 如何用正则表达式验证mvc中的CNIC no,c#,regex,asp.net-mvc,data-annotations,C#,Regex,Asp.net Mvc,Data Annotations,我要验证CNIC号码(计算的国民身份证号码)。 我想从客户端获取输入,比如(12345-1234567-1)除了破折号之外没有字符。我写了下面的正则表达式 [RegularExpression("^[0-9]{5}-[-|]-[0-9]{7}-[-|]-[0-9]{1}")] public string NICNo { get; set; } 但当我提交from时,它在验证错误中显示了整个正则表达式,如下所示 您不需要[-|],使用 ^[0-9]{5}-[0-9]{7}-[0-9]$ 看。请

我要验证CNIC号码(计算的国民身份证号码)。 我想从客户端获取输入,比如(12345-1234567-1)除了破折号之外没有字符。我写了下面的正则表达式

[RegularExpression("^[0-9]{5}-[-|]-[0-9]{7}-[-|]-[0-9]{1}")]
public string NICNo { get; set; }
但当我提交from时,它在验证错误中显示了整个正则表达式,如下所示


您不需要
[-|]
,使用

^[0-9]{5}-[0-9]{7}-[0-9]$
看。请注意,结尾处的
$
需要字符串结尾

详细信息

  • ^
    -字符串的开头
  • [0-9]{5}
    -5位数字
  • -
    -连字符
  • [0-9]{7}
    -7位
  • -
    -连字符
  • [0-9]
    -一个数字(无需“说”
    {1}
  • $
    -字符串结束锚定
代码:

[RegularExpression("^[0-9]{5}-[0-9]{7}-[0-9]$", ErrorMessage = "CNIC No must follow the XXXXX-XXXXXXX-X format!")]
public string NICNo { get; set; }

您也可以在代码中使用此选项(由于字符串的原因,需要额外的反斜杠)


谢谢@Wiktor Stribizew。。。。现在它工作了,但仍然显示整个正则表达式在验证错误中显示,正如我在上面的屏幕中提到的,这是一些刷新问题吗?如果正则表达式验证通过,应该不会有错误消息,对吗?Stribizew bro我应该用什么来表示空白regexI表示两个字符串之间的空格
[RegularExpression("^\\d{5}-\\d{7}-\\d{1}$")] 
^\d{5}-\d{7}-\d{1}$