我想验证 CNIC 号码(计算出的国民身份证号码)。 我想从客户端获取输入,例如(12345-1234567-1),除了破折号之外没有任何字符。我在下面写了正则表达式
[RegularExpression("^[0-9]{5}-[-|]-[0-9]{7}-[-|]-[0-9]{1}")]
public string NICNo { get; set; }
但是当我提交时,它会在验证错误中显示整个正则表达式,如下所示
您不需要
[-|]
,使用
^[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; }
我认为更准确的正则表达式是:
\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; }