如何通过正则表达式验证mvc中的CNIC no

No *_*One 3 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; }
Run Code Online (Sandbox Code Playgroud)

但是当我提交时,它会在验证错误中显示整个正则表达式,如下所示

在此处输入图片说明

Wik*_*żew 6

你不需要[-|],使用

^[0-9]{5}-[0-9]{7}-[0-9]$
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示。注意$最后需要字符串的结尾。

细节

  • ^ - 字符串的开始
  • [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; }
Run Code Online (Sandbox Code Playgroud)