Regex para código postal canadense

Use /^[ABCEGHJ-NPRSTVXY]\d[ABCEGHJ-NPRSTV-Z] ?\d[ABCEGHJ-NPRSTV-Z]\d$/ para verificar se uma string inteira é um código postal canadense válido. Todos os exemplos abaixo foram testados com o padrão, e você pode abri-los no Regex Tester com as amostras já carregadas.

Atualizado em

/^[ABCEGHJ-NPRSTVXY]\d[ABCEGHJ-NPRSTV-Z] ?\d[ABCEGHJ-NPRSTV-Z]\d$/
Abrir no Regex Tester
EntradaResultado
K1A 0B1✓ Corresponde
M5V3L9✓ Corresponde
H2X 1Y4✓ Corresponde
D1A 0B1✗ Sem correspondência
K1A-0B1✗ Sem correspondência
12345✗ Sem correspondência
k1a 0b1✗ Sem correspondência

Como o padrão funciona

ParteSignificado
[ABCEGHJ-NPRSTVXY]Primeira letra: D, F, I, O, Q, U, W e Z nunca são usadas
\dUm dígito
[ABCEGHJ-NPRSTV-Z]Uma letra (D, F, I, O, Q, U são excluídas)
?Espaço opcional
\d[ABCEGHJ-NPRSTV-Z]\dDígito, letra, dígito

Exemplos de código

JavaScript

const re = /^[ABCEGHJ-NPRSTVXY]\d[ABCEGHJ-NPRSTV-Z] ?\d[ABCEGHJ-NPRSTV-Z]\d$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'[ABCEGHJ-NPRSTVXY]\d[ABCEGHJ-NPRSTV-Z] ?\d[ABCEGHJ-NPRSTV-Z]\d', value))

PHP

preg_match('/^[ABCEGHJ-NPRSTVXY]\d[ABCEGHJ-NPRSTV-Z] ?\d[ABCEGHJ-NPRSTV-Z]\d$/', $value) === 1;

Observações e limitações

Converta a entrada para maiúsculas antes, se quiser aceitar entradas em minúsculas — o padrão diferencia maiúsculas de minúsculas de propósito, para conseguir rejeitar as letras não usadas.

Perguntas frequentes

Qual é o regex para código postal canadense?
/^[ABCEGHJ-NPRSTVXY]\d[ABCEGHJ-NPRSTV-Z] ?\d[ABCEGHJ-NPRSTV-Z]\d$/ — ele corresponde à string inteira. Veja a tabela acima para o que cada parte faz.
Quais exemplos correspondem?
Entre os exemplos testados, estes correspondem: K1A 0B1, M5V3L9, H2X 1Y4. Os outros não.
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 enquanto você edita.