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}[ABCEGHJKLMNPRSTVWXYZabceghjklmnprstvxy]{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;
}
}