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

问题描述 投票:0回答:2

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

[RegularExpression("^[0-9]{5}-[-|]-[0-9]{7}-[-|]-[0-9]{1}")]
public string NICNo { get; set; }

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

enter image description here

c# regex asp.net-mvc data-annotations
2个回答
11
投票

您不需要

[-|]
,使用

^[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; }

0
投票

我认为更准确的正则表达式是:

\b[1-7]{1}[0-9]{4}[-]\d{7}[-][1-9]{1}\b

第一个数字代表巴基斯坦的不同省份和地区,可以在1-7之间。所有模式都包含在闭合边界中

b\b\
确保匹配在单词的边界处开始和结束。

代码中:

[RegularExpression("\b[1-7]{1}[0-9]{4}[-]\d{7}[-][1-9]{1}\b", ErrorMessage = "CNIC No must follow the XXXXX-XXXXXXX-X format!")] public string NICNo { get; set; }
© www.soinside.com 2019 - 2024. All rights reserved.