Я пробовал один на сайте .gov, как указано на многих вопросах здесь, но он, похоже, не работает для коротких почтовых индексов.Validate UK Postcode - короткая и длинная версия
Мое регулярное выражение:
preg_match('^(([gG][iI][rR] {0,}0[aA]{2})|((([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y]?[0-9][0-9]?)|(([a-pr-uwyzA-PR-UWYZ][0-9][a-hjkstuwA-HJKSTUW])|([a-pr-uwyzA-PR-UWYZ][a-hk-yA-HK-Y][0-9][abehmnprv-yABEHMNPRV-Y]))) {0,}[0-9][abd-hjlnp-uw-zABD-HJLNP-UW-Z]{2}))^', $this->post['location'], $matches)
Когда я использую длинный почтовый индекс формата: AA9 9ZZ
это работает, но один из формата AA9
оленьих кожи. Мне нужно следующие форматы работы:
- AA9
- AA99
- AA9 9ZZ
- AA99 9ZZ
Во-первых, не используйте '^' в качестве разделителя шаблона, а также использование это с '$' ancho Ваш шаблон. Замените группы захвата группами, не связанными с захватом, используйте флаг i, удалите ненужные группы. –
@CasimiretHippolyte ive изменил это теперь, регулярное выражение, похоже, проверяет длинные почтовые индексы, но не сокращенные версии. –
Это только первый шаг задания (в частности, для его более читаемости), а не для решения. –