Expresión regular para validar un código postal

Expresión regular para validar un código postal

La siguiente expresión regular permite comprobar un código postal francés con el formato «DDDDD». Se usan todos los dígitos. Los dos primeros indican el departamento y van del 01 al 98. El código de abajo es la expresión regular de un código postal para comprobar si el formato es correcto.

expresión regular código postal

javascript
/^(?:0[1-9]|[1-8]\d|9[0-8])\d{3}$/

Te dejo también varias expresiones regulares de códigos postales según el país: solo tienes que sustituir la expresión por la que necesites.

Bélgica

Códigos postales con el formato «DDDD»: el primer dígito representa la provincia y los demás los sectores de distribución. Los códigos postales no empiezan por cero.

javascript
/^(?:(?:[1-9])(?:\d{3}))$/
Suiza

Cuatro dígitos: el primero es el distrito, el segundo la zona, el tercero la ruta y el cuarto el número de la oficina de correos.

javascript
/^[1-9]\d{3}$/
Reino Unido

Esquema del código postal británico

javascript
/^(?:GIR 0AA|(?:(?:(?:A[BL]|B[ABDHLNRSTX]?|C[ABFHMORTVW]|D[ADEGHLNTY]|E[HNX]?|F[KY]|G[LUY]?|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]?|M[EKL]?|N[EGNPRW]?|O[LX]|P[AEHLOR]|R[GHM]|S[AEGK-PRSTY]?|T[ADFNQRSW]|UB|W[ADFNRSV]|YO|ZE)[1-9]?\d|(?:(?:E|N|NW|SE|SW|W)1|EC[1-4]|WC[12])[A-HJKMNPR-Y]|(?:SW|W)(?:[2-9]|[1-9]\d)|EC[1-9]\d)\d[ABD-HJLNP-UW-Z]{2}))$/i
Alemania

Códigos postales con el formato «DDDDD». Se usan todos los dígitos. El primero corresponde a la zona de distribución y el segundo a la región de distribución. Los demás indican el distrito de reparto y la localidad postal.

javascript
/^\d{5}$/
España

Cinco dígitos: los dos primeros indican la provincia. Tercer dígito: gran ciudad. Dos últimos dígitos: las zonas rurales.

javascript
/^(?:0[1-9]|[1-4]\d|5[0-2])\d{3}$/
Italia

Primer dígito: región. Segundo dígito: provincia. Tercer dígito: capital o provincia (impar para la capital). Cuarto dígito: itinerario. Quinto dígito: localidad del itinerario (0 para las localidades pequeñas).

javascript
/^\d{5}$/
Estados Unidos

Códigos postales con el formato «DDDDD» o «DDDDD-DDDD». Se usan todos los dígitos y ninguno tiene un significado particular.

javascript
/^(?:GIR 0AA|(?:(?:(?:A[BL]|B[ABDHLNRSTX]?|C[ABFHMORTVW]|D[ADEGHLNTY]|E[HNX]?|F[KY]|G[LUY]?|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]?|M[EKL]?|N[EGNPRW]?|O[LX]|P[AEHLOR]|R[GHM]|S[AEGK-PRSTY]?|T[ADFNQRSW]|UB|W[ADFNRSV]|YO|ZE)[1-9]?\d|(?:(?:E|N|NW|SE|SW|W)1|EC[1-4]|WC[12])[A-HJKMNPR-Y]|(?:SW|W)(?:[2-9]|[1-9]\d)|EC[1-9]\d)\d[ABD-HJLNP-UW-Z]{2}))$/i

Versión en JavaScript de la expresión regular para un código postal

El formato de código postal válido es «DDDDD». La función recibe el código postal como parámetro y lo compara con la expresión regular. Si no encuentra ninguna coincidencia, la validación falla y devuelve false, si la encuentra, devuelve true.

Función JavaScript de una expresión regular de código postal

javascript
/**
 * Valida un código postal con una expresión regular
 *
 * Si el código postal no es válido, devuelve false
 *
 * @param postcode
 * @return Boolean
 */
function validatePostcode(postcode){
    var Reg = new RegExp(/^(?:0[1-9]|[1-8]\d|9[0-8])\d{3}$/i);
    return Reg.test(postcode);
}

Cómo usar la función JavaScript

La mejor forma de usarla es dentro de una condición IF, como aquí abajo.

javascript
if(validatePostcode(postcode)){
     alert("Code postal valide");
} else {
     alert("Code postal invalide");
}

See the Pen
Untitled
by Damien Flandrin (@dam62500)
on CodePen.0

Versión en PHP de la expresión regular para un código postal

Para asegurarte de que los códigos postales son correctos, además del control en el front conviene validar también en el servidor. Aquí tienes un snippet en PHP para validar códigos postales del lado del servidor.

Función PHP de una expresión regular de código postal

php
/*
 * valida el código postal
 * @param $postcode
 */
function isValidPostcode($postcode)
{
    return preg_match('/^(?:0[1-9]|[1-8]\d|9[0-8])\d{3}$/i', $postcode);
}

Versión en HTML

En HTML se pueden crear campos que comprueben si el valor es válido con el atributo pattern de <input>: ahí puedes indicar la expresión regular de un código postal. Ojo, esto solo sirve para mostrarle la información visualmente al usuario, por ejemplo con bordes rojos.

html
<input
      name="postcode"
      type="text"
      pattern="(?:0[1-9]|[1-8]\d|9[0-8])\d{3}"
      placeholder="DDDDD"
     />

See the Pen
Valider un code postal avec une expression régulière en HTML
by Damien Flandrin (@dam62500)
on CodePen.0

HTMLJavaScriptPHP

Damien Flandrin Desarrollador web desde 2010, creador de Gekkode y de Email Impact. Cada artículo se prueba en un proyecto real antes de publicarse. Contacto
Newsletter

Las nuevas pruebas, tutoriales y proyectos, por correo.

Pruebas reproducibles, código versionado, resultados fechados. Nunca spam.