Регулярное выражение для почтового индекса Великобритании

Используйте /^[A-Z]{1,2}\d[A-Z\d]? ?\d[A-Z]{2}$/i, чтобы проверить, что вся строка является корректным почтовым индексом Великобритании. Каждый пример ниже проверен по этому шаблону, и его можно открыть в Regex Tester с уже загруженными образцами.

Обновлено

/^[A-Z]{1,2}\d[A-Z\d]? ?\d[A-Z]{2}$/i
Открыть в Regex Tester
ВводРезультат
SW1A 1AA✓ Совпадение
M1 1AE✓ Совпадение
B33 8TH✓ Совпадение
cr2 6xh✓ Совпадение
12345✗ Нет совпадения
SW1A1A✗ Нет совпадения
SW1A 1A1✗ Нет совпадения

Как работает шаблон

ЧастьЗначение
[A-Z]{1,2}Почтовый район: одна или две буквы
\d[A-Z\d]?Округ: цифра, за которой при необходимости следует буква или цифра
?Необязательный пробел
\d[A-Z]{2}Внутренний код: цифра и две буквы
i flagБез учёта регистра

Примеры кода

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;

Примечания и ограничения

Это проверяет формат индекса, а не его существование. При сохранении приводите индекс к верхнему регистру с одним пробелом перед последними тремя символами.

Часто задаваемые вопросы

Каково регулярное выражение для почтового индекса Великобритании?
/^[A-Z]{1,2}\d[A-Z\d]? ?\d[A-Z]{2}$/i — шаблон проверяет всю строку целиком. Что делает каждая часть, см. в таблице выше.
Какие примеры совпадают?
Из проверенных примеров совпадают: SW1A 1AA, M1 1AE, B33 8TH, cr2 6xh. Остальные — нет.
Как протестировать это регулярное выражение?
Нажмите «Открыть в Regex Tester» — шаблон, флаги и примеры текста загрузятся автоматически, а совпадения будут подсвечиваться по мере редактирования.