C#-美国或加拿大邮政编码的验证
本文关键字:验证 邮政编码 加拿大 美国 C#- | 更新日期: 2023-09-27 18:00:04
我正在使用以下方法验证美国或加拿大的邮政编码,但我认为它对我来说不太好。请建议我修改正则表达式。
private bool IsUSorCanadianZipCode(string zipCode)
{
bool isValidUsOrCanadianZip = false;
string pattern = @"^'d{5}-'d{4}|'d{5}|[A-Z]'d[A-Z] 'd[A-Z]'d$";
Regex regex = new Regex(pattern);
return isValidUsOrCanadianZip = regex.IsMatch(zipCode);
}
谢谢。
var _usZipRegEx = @"^'d{5}(?:[-'s]'d{4})?$";
var _caZipRegEx = @"^([ABCEGHJKLMNPRSTVXY]'d[ABCEGHJKLMNPRSTVWXYZ])' {0,1}('d[ABCEGHJKLMNPRSTVWXYZ]'d)$";
private bool IsUSOrCanadianZipCode(string zipCode)
{
var validZipCode = true;
if ((!Regex.Match(zipCode, _usZipRegEx).Success) && (!Regex.Match(zipCode, _caZipRegEx).Success))
{
validZipCode = false;
}
return validZipCode;
}
}
如果使用数据注释验证器,可以使用RegularExpression属性,如下所示:
[RegularExpression(@"(^'d{5}(-'d{4})?$)|(^[ABCEGHJKLMNPRSTVXYabceghjklmnprstvxy]{1}'d{1}[ABCEGHJKLMNPRSTVWXYZabceghjklmnprstvxy]{1} *'d{1}[ABCEGHJKLMNPRSTVWXYZabceghjklmnprstvxy]{1}'d{1}$)", ErrorMessage = "That postal code is not a valid US or Canadian postal code.")]
(regex来自上面发布的链接@huMptyduMpty,网址为http://geekswithblogs.net/MainaD/archive/2007/12/03/117321.aspx但是我的正则表达式允许大小写字母)
"在我的机器上"有效的美国邮政编码验证是
[RegularExpression(@"'d{5}$", ErrorMessage = "Invalid Zip Code")]