Regex para código postal canadiense

Usa /^[ABCEGHJ-NPRSTVXY]\d[ABCEGHJ-NPRSTV-Z] ?\d[ABCEGHJ-NPRSTV-Z]\d$/ para comprobar que una cadena completa es un código postal canadiense válido. Cada ejemplo de abajo se ha probado contra el patrón, y puedes abrirlo en Regex Tester con los ejemplos ya cargados.

Actualizado el

/^[ABCEGHJ-NPRSTVXY]\d[ABCEGHJ-NPRSTV-Z] ?\d[ABCEGHJ-NPRSTV-Z]\d$/
Abrir en Regex Tester
EntradaResultado
K1A 0B1✓ Coincide
M5V3L9✓ Coincide
H2X 1Y4✓ Coincide
D1A 0B1✗ No coincide
K1A-0B1✗ No coincide
12345✗ No coincide
k1a 0b1✗ No coincide

Cómo funciona el patrón

ParteSignificado
[ABCEGHJ-NPRSTVXY]Primera letra: D, F, I, O, Q, U, W y Z nunca se usan
\dUn dígito
[ABCEGHJ-NPRSTV-Z]Una letra (se excluyen D, F, I, O, Q, U)
?Espacio opcional
\d[ABCEGHJ-NPRSTV-Z]\dDígito, letra, dígito

Ejemplos 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;

Notas y limitaciones

Si quieres aceptar entradas en minúsculas, convierte primero el texto a mayúsculas. El patrón distingue entre mayúsculas y minúsculas a propósito, para poder descartar las letras no utilizadas.

Preguntas frecuentes

¿Cuál es el regex para el código postal canadiense?
/^[ABCEGHJ-NPRSTVXY]\d[ABCEGHJ-NPRSTV-Z] ?\d[ABCEGHJ-NPRSTV-Z]\d$/ — coincide con la cadena completa. Consulta la tabla de arriba para ver qué hace cada parte.
¿Qué ejemplos coinciden?
De los ejemplos probados, coinciden estos: K1A 0B1, M5V3L9, H2X 1Y4. Los demás no.
¿Cómo pruebo este regex?
Haz clic en “Abrir en Regex Tester”: el patrón, los flags y el texto de ejemplo se cargan automáticamente, y las coincidencias se resaltan mientras editas.