我有一个包含许多验证规则的模型,除了旨在验证邮政编码的验证规则外,所有验证规则都正常工作。规则/属性定义如下:
[Required(ErrorMessage="Postcode is required")]
[StringLength(20, ErrorMessage="Postcode must be under 20 characters")]
[RegularExpression(@"[A-Za-z]{1,2}[0-9R][0-9A-Z]?[ ]?[0-9][A-Za-z-[CIKMOVcikmov]]{2}", ErrorMessage="Postcode is not valid")]
public string Postcode { get; set; }
每次邮政编码未通过RegEx验证时,即使在在线测试仪中使用相同的RegEx(例如http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx)也会通过。应该通过的英国邮政编码的几个例子是IP4 4DL和bn35fb
答案 0 :(得分:0)
我已经运行了这个测试
var attr = new RegularExpressionAttribute(@"[A-Za-z]{1,2}[0-9R][0-9A-Z]?[ ]?[0-9][A-Za-z-[CIKMOVcikmov]]{2}");
Assert.IsTrue(attr.IsValid("IP4 4DL"));
它似乎工作正常。
我唯一的建议是检查传入邮政编码的任何一侧是否有空格。
答案 1 :(得分:0)
一些注意事项:
TL; DR:尝试替换最终的字符模式,看它是否开始工作。