york unidos postal new miami florida estados eeuu código cual codigo california c# asp.net .net

c# - new - cual es el codigo postal de estados unidos



C#- Validación de código postal de EE. UU. O Canadá (3)

Estoy utilizando el siguiente método para validar el código postal de EE. UU. O Canadá, pero creo que no funciona bien para mí. Por favor, sugiéreme los cambios en la expresión regular.

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

Gracias.


La validación del código postal de EE. UU. Que funciona "en mi máquina" es

[RegularExpression(@"/d{5}$", ErrorMessage = "Invalid Zip Code")]


Si está utilizando validadores de anotación de datos, puede usar un atributo de expresión regular como este:

[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.")]

(la expresión regular es del enlace @huMptyduMpty publicado anteriormente en http://geekswithblogs.net/MainaD/archive/2007/12/03/117321.aspx pero mi expresión regular permite mayúsculas y minúsculas)


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