Regex de código postal francês em JavaScript, PHP e HTML

Regex de código postal francês em JavaScript, PHP e HTML

A expressão regular abaixo testa um código postal francês com a forma «DDDDD». Todos os algarismos são usados. Os dois primeiros indicam o departamento e vão de 01 a 98. O código seguinte é a expressão regular de um código postal para verificar se o formato está correto.

expressão regular código postal

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

Deixo-te também expressões regulares de códigos postais de outros países, basta trocar a expressão pela de que precisas.

Bélgica

Códigos postais com a forma «DDDD», sendo o primeiro algarismo a província e os restantes os setores de distribuição. Os códigos postais belgas nunca começam por zero.

javascript
/^(?:(?:[1-9])(?:\d{3}))$/
Suíça

Quatro algarismos: o primeiro é o distrito, o segundo a zona, o terceiro a rota, o quarto o número da estação de correios.

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

Esquema do 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
Alemanha

Códigos postais com a forma «DDDDD». Todos os algarismos são usados. O primeiro corresponde à zona de distribuição, o segundo à região de distribuição. Os restantes indicam o distrito de distribuição e a localidade postal.

javascript
/^\d{5}$/
Espanha

Cinco algarismos, os dois primeiros indicam a província. Terceiro algarismo: cidade grande. Dois últimos algarismos: as zonas rurais.

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

Primeiro algarismo: região. Segundo algarismo: província. Terceiro algarismo: capital ou província (ímpar para a capital). Quarto algarismo: itinerário. Quinto algarismo: local no itinerário (0 para os locais pequenos).

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

Códigos ZIP com a forma «DDDDD» ou «DDDDD-DDDD». Todos os algarismos são usados e nenhum tem 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

Versão JavaScript da expressão regular para um código postal

O formato válido de um código postal é «DDDDD». A função recebe o código postal como parâmetro e compara-o com a expressão regular. Se não encontrar correspondência, a validação falha e a função devolve false, havendo correspondência, devolve true.

Função JavaScript de uma expressão regular para código postal

javascript
/**
 * Valida um código postal com uma expressão regular
 *
 * Se o código postal não for válido, devolve 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);
}

Como usar a função JavaScript

A melhor forma de a usar é dentro de uma condição IF, como abaixo.

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

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

Versão PHP da expressão regular para um código postal

Validar os códigos postais no front-end não chega: a mesma verificação tem de correr no servidor. Aqui fica um snippet PHP para validar códigos postais do lado do servidor.

Função PHP de uma expressão regular para código postal

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

Versão HTML

Em HTML, podes criar campos que indicam se o valor é válido através do atributo pattern de <input>, onde podes colocar uma expressão regular de código postal. Atenção: isto só serve para mostrar a informação visualmente ao utilizador, por exemplo com bordas vermelhas.

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

See the Pen
Validar um código postal com uma expressão regular em HTML
by Damien Flandrin (@dam62500)
on CodePen.

HTMLJavaScriptPHP

Damien Flandrin Programador web desde 2010, criador da Gekkode e do Email Impact. Cada artigo é testado num projeto real antes de ser publicado. Contacto
Newsletter

Os novos testes, tutoriais e projetos, por e-mail.

Testes reproduzíveis, código versionado, resultados datados. Nunca spam.