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);
    }

谢谢。

C#-美国或加拿大邮政编码的验证

    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}[ABCEGHJKLMNPRSTVWXYZabceghjklmnprstv‌​xy]{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")]