Французский регулярное выражение почтовый индекс

Мне нужно регулярное выражение для проверки французского почтового индекса в PHP.

У меня есть регулярное выражение, как:

/^(([\d]{2} )|(2[abAB] ))*(([\d]{2})|(2[abAB]))$/ захват от 01 до 99 или 2a или 2b
или же
^[0-9]{5}$ захват от 01000 до 99000
или же
^(0[1-9]|[1-8]\d|9[0-5])\d{3}$ захват от 01000 до 95999

На самом деле мне нужно комбо из этих 3 регулярных выражений,
Может захватывать от 01 до 95, или от 01000 до 95000, или от 971 до 978, или от 984 до 989, или от 2А, или от 2а, или от 2В, или от 2b.

Любая идея ?
большое спасибо

-1

Решение

Как насчет:

(?:0[1-9]|[13-8][0-9]|2[ab1-9]|9[0-5])(?:[0-9]{3})?|9[78][1-9](?:[0-9]{2})?

Посмотри на: https://fr.wikipedia.org/wiki/Code_postal_en_France

2

Другие решения

На основании ваших спецификаций я думаю:

^(?:(?:(?:0[1-9]|[1-8]\d|9[0-4])(?:\d{3})?)|97[1-8]|98[4-9]|‌​‌​2[abAB])$

будет соответствовать вашим требованиям. У вашего регулярного выражения были проблемы с диапазонами и пробелами.

Демо-версия: https://regex101.com/r/wFnEDj/2/

1

По вопросам рекламы [email protected]