Estoy buscando el último código postal y código postal regex. Estoy buscando algo que cubra la mayoría (con suerte, todo) del mundo.
regex
zipcode
postal-code
Darryl Hein
fuente
fuente
Respuestas:
No hay ninguno.
Los códigos postales / postales de todo el mundo no siguen un patrón común. En algunos países están formados por números, en otros pueden ser combinaciones de números y letras, algunos pueden contener espacios, otros puntos, el número de caracteres puede variar de dos a al menos seis ...
Lo que podría hacer (en teoría) es crear una expresión regular separada para todos los países del mundo, no es recomendable la OMI. Pero aún faltaría en la parte de validación: el código postal
12345
puede existir, pero12346
no, tal vez12344
tampoco exista. ¿Cómo se verifica eso con una expresión regular?No puedes
fuente
^\d{5}(?:[-\s]\d{4})?$
El CLDR unicode contiene el código postal regex para cada país. (¡158 expresiones regulares en total!)
core.zip
desde http://unicode.org/Public/cldr/26.0.1/common/supplemental/postalCodeData.xml
contenido descomprimido (contenido directo: común / suplementario / postalCodeData.xml )Google también tiene un servicio web con información de formato de dirección por país, incluidos los códigos postales, aquí: http://i18napis.appspot.com/address (encontré ese enlace a través de http://unicode.org/review/pri180/ )
Editar
Aquí una copia de la expresión regular postalCodeData.xml :
fuente
usa estos regx
fuente
Cada sistema de código postal usa solo AZ y / o 0-9 y, a veces, espacio / guión
No todos los países usan códigos postales (por ejemplo, Irlanda fuera de Dublín), pero lo ignoraremos aquí.
El formato de código postal más corto es Sierra Leona con
NN
El más largo es Samoa Americana con
NNNNN-NNNNNN
Debe permitir un espacio o guión.
No debe comenzar o terminar con espacio o guión
Esto debería cubrir lo anterior:
fuente
Intentar cubrir el mundo entero con una expresión regular no es completamente posible, y ciertamente no es factible o recomendado.
No para sonar mi propia bocina, pero he escrito algunas expresiones regulares bastante completas que pueden serle útiles.
Códigos postales canadienses
Códigos postales de EE. UU.
Códigos postales del Reino Unido
No es posible garantizar la precisión sin enviar realmente algo a una dirección y que la persona le avise cuando lo reciba, pero podemos reducir las cosas eliminando los casos que sabemos que son malos.
fuente
Esto parece una buena referencia, aunque no está en Regex.
Realmente, a menos que esté enviando algo a sus usuarios, no creo que valga la pena el esfuerzo. Y si lo está enviando, existen herramientas / servicios de limpieza de direcciones que puede considerar para que sea más fácil para usted.
fuente
Usamos lo siguiente:
Canadá
America
Otro
fuente
Dependiendo de su aplicación, es posible que desee implementar la coincidencia de expresiones regulares para los países donde se originan la mayoría de sus visitantes y no validar el resto (acepte cualquier cosa).
fuente
Big Jump se olvidó de los saltos de línea, los espacios en blanco y los caracteres de control.
Los códigos postales internacionales son una especie de problema de detención.
fuente
Tenga en cuenta que este es un problema bastante difícil, como lo indica la respuesta aceptada. Sin embargo, supongo que no disuadió a la gente de geonames.org . Tienen un archivo un archivo de información del país , que no encaja completamente en esta respuesta: el límite es aparentemente de 30000 caracteres. Hay expresiones regulares para unos 150 países.
Extraje los bits relevantes para esta pregunta aquí:
Espero no haber cometido ningún error, mi regex-fu es bastante débil.
fuente
Si alguien todavía está interesado en cómo validar los códigos postales, he encontrado una solución:
Utilizando
Google Geocoding API
podemos verificar la validez del código postal que tiene tanto el código de país como el código postal en sí.Por ejemplo, vivo en Ucrania, por lo que puedo verificar así: https://maps.googleapis.com/maps/api/geocode/json?components=postal_code:80380|country:UA
O utilizando la API de JS: https://developers.google.com/maps/documentation/javascript/geocoding#ComponentFiltering
Donde
80380
es válido ZIP para Ucrania, en realidad cada (#####) es válido.Google devuelve el
ZERO_RESULTS
estado si no se encuentra nada. OOK
y un resultado si ambos son correctos.Esperamos que esto sea útil.
fuente
Como otros han señalado, una expresión regular para gobernarlos a todos es poco probable. Sin embargo, puede crear expresiones regulares para tantos países como necesite utilizando el información de formato de dirección de la Unión Postal Universal , una agencia poco conocida de la ONU.
Por ejemplo, aquí están las reglas de formato de dirección, incluido el código postal, para un puñado de países (formato PDF):
fuente
El problema será que probablemente no tenga un buen medio para mantenerse al día con los requisitos cambiantes del código postal de los países del otro lado del mundo y que no comparte idiomas comunes. A menos que tenga un presupuesto lo suficientemente grande como para rastrear esto, es casi seguro que le otorgue la responsabilidad de validar las direcciones a google o yahoo.
Ambas compañías proporcionan facilidades de búsqueda de direcciones a través de una API programable.
fuente
¿Por qué haces esto y por qué te importa? Como señaló Tom Ritter, no importa si tiene un código postal / postal, mucho menos si es válido o no, hasta y a menos que realmente envíe algo a esa dirección. Incluso si espera que algún día les envíe algo , eso no significa que necesite un código postal hoy .
fuente
Como se señaló en otra parte, la variación en todo el mundo es enorme. E incluso si algo que coincide con el patrón no significa que existe.
Luego, por supuesto, hay muchos lugares donde no se utilizan códigos postales (por ejemplo, mucho o Irlanda).
fuente
Hay razones más allá del envío para tener un código postal exacto. Las agencias de viajes que realizan recorridos que cruzan fronteras (excepto la Eurozona, por supuesto) necesitan esta información con anticipación para dar a las autoridades. A menudo, esta información es ingresada por un agente que puede o no estar familiarizado con tales cosas. CUALQUIER método que pueda reducir los errores es una buena idea ™
Sin embargo, escribir una expresión regular que cubra todos los códigos postales del mundo sería una locura.
fuente
Dado que hay tantos casos extremos para cada país (por ejemplo, las direcciones de Londres pueden usar un formato ligeramente diferente al resto del Reino Unido), no creo que haya una expresión regular definitiva aparte de tal vez:
Lo mejor es seguir un patrón bastante amplio (bueno, no tan amplio como el anterior), ¡o tratar a cada país / región con un patrón específico propio!
ACTUALIZAR: Sin embargo, puede ser posible construir dinámicamente una expresión regular basada en muchas reglas más pequeñas, específicas de la región, ¡aunque no estoy seguro sobre el rendimiento!
Se pueden encontrar muchos patrones específicos del país en el sitio RegExLib .
fuente
Alguien estaba preguntando sobre la lista de direcciones de correo de formato, y creo que esto es lo que estaba buscando ...
Guía compulsiva de Frank de direcciones postales: http://www.columbia.edu/~fdc/postal/ Sin embargo, No ayuda mucho con los problemas a nivel de la calle.
Mi trabajo utiliza un par de herramientas para ayudar con esto: - Servicios de Lexis-Nexis, incluidas las búsquedas de NCOA (obtendrá la estandarización de direcciones de forma "gratuita") - "Melissa Data" http://www.melissadata.com
fuente
Este es un RegEx muy simple para validar el código postal de EE. UU. (No ZipCode Plus Four):
Parece que los cinco dígitos numéricos son códigos postales válidos
00000
, excepto ,88888
&99999
.He probado este RegEx con http://regexpal.com/
SP
fuente
Si
Zip Code
permite caracteres y dígitos (alfanuméricos), la expresión regular debajo se usaría donde coincida, 5 o 9 o 10 caracteres alfanuméricos con una letra (-
):fuente