Мне нужно регулярное выражение для проверки французского почтового индекса в 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.
Любая идея ?
большое спасибо
Как насчет:
(?: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
На основании ваших спецификаций я думаю:
^(?:(?:(?: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/