@targetologru

Как доработать регулярку для проверки URL?

Вводная: в скрипт приходит вся строка целиком после site.ru. Это могуть быть такие строки:
/abc/
//abc/
abc/
abc/abc/
abc/index.php?utm_source=vk

Задача: пропускать URL, который соответствует условиям:
0. Первая папка не "system"
1. Между папками содержит только один слеш
2. Названия папок содержат только буквы, цифры, знак минус и подчеркивание
3. Строка может заканчиваться на /index.php
4. Строка может заканчиваться GET-параметрами (цифры, буквы, подчеркивание, минус, &, один знак ?)

В общем, сваял я такую регулярку:
^[^\/system]([a-z0-9-\/]+)*(index\.php)?(\?{1}([a-z_0-9-=&]+)+)?$/gmi


Такую строку пропускает: abc/abc/index.php?utm_source=vk
А такую нет: systemsssss/abc/index.php?utm_source=vk

Как доделать?
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
@dodo512
https://regex101.com/r/BwUb2H/1
^/?(?!system/)(?:[-\w]+/)*(?:index\.php|)(?:\?[-&=\w]+|)$
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы