Regex para postcode do Reino Unido

Use /^[A-Z]{1,2}\d[A-Z\d]? ?\d[A-Z]{2}$/i para verificar se uma string inteira é um postcode válido do Reino Unido. Todos os exemplos abaixo foram testados contra o padrão, e você pode abri-los no Regex Tester com as amostras já carregadas.

Atualizado em

/^[A-Z]{1,2}\d[A-Z\d]? ?\d[A-Z]{2}$/i
Abrir no Regex Tester
EntradaResultado
SW1A 1AA✓ Corresponde
M1 1AE✓ Corresponde
B33 8TH✓ Corresponde
cr2 6xh✓ Corresponde
12345✗ Não corresponde
SW1A1A✗ Não corresponde
SW1A 1A1✗ Não corresponde

Como o padrão funciona

ParteSignificado
[A-Z]{1,2}Área do postcode: uma ou duas letras
\d[A-Z\d]?Distrito: um dígito, opcionalmente seguido de uma letra ou dígito
?Espaço opcional
\d[A-Z]{2}Código interno: um dígito e duas letras
i flagNão diferencia maiúsculas de minúsculas

Exemplos de código

JavaScript

const re = /^[A-Z]{1,2}\d[A-Z\d]? ?\d[A-Z]{2}$/i;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'[A-Z]{1,2}\d[A-Z\d]? ?\d[A-Z]{2}', value, re.I))

PHP

preg_match('/^[A-Z]{1,2}\d[A-Z\d]? ?\d[A-Z]{2}$/i', $value) === 1;

Notas e limitações

Isso verifica o formato de um postcode, não se ele existe. Ao armazenar, normalize para letras maiúsculas com um único espaço antes dos últimos três caracteres.

Perguntas frequentes

Qual é o regex para postcode do Reino Unido?
/^[A-Z]{1,2}\d[A-Z\d]? ?\d[A-Z]{2}$/i — ele corresponde à string inteira. Veja a tabela acima para entender o que cada parte faz.
Quais exemplos correspondem?
Dos exemplos testados, estes correspondem: SW1A 1AA, M1 1AE, B33 8TH, cr2 6xh. Os outros não correspondem.
Como testo esse regex?
Clique em “Abrir no Regex Tester” — o padrão, as flags e o texto de exemplo são carregados automaticamente, e as correspondências são destacadas conforme você edita.