Regex для таргетинга на страницу, но не на ее детей - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь написать регулярное выражение для целевого URL, но не для его дочерних элементов. Мое регулярное выражение определенно довольно слабое и может использовать некоторую помощь.

Страница, на которую я хочу нацелиться (может включать в себя косую черту и / или параметры UTM): https://test.com/deals/ Пример страницы, на которую я не хочу нацеливаться: https://test.com/deals/Best-Sellers/c/901

Моя попытка:

.*Deals\/((?!Best).)*

1 Ответ

0 голосов
/ 07 октября 2019

Вы можете использовать \/deals\/?(?:[?#]\S*)?$

Проверка на Regex101

Это немного более допустимо, чем то, что предлагает ваш вопрос, но может пригодиться.

Главное, что он пытается сопоставить /deals в конце строки. Это гарантирует, что вы не будете совпадать, скажем, https://test.com/best-deals или аналогичный, но только URL, который заканчивается на /deals. Кроме того, окончательный / является необязательным - вы можете получить https://test.com/deals.

. Кроме того, регулярное выражение позволяет URL заканчиваться # якорями или ?, за которыми следуют параметры. Страница может разрешить это прямо сейчас или в будущем - например, если используется ссылка, которая ведет на ту же страницу (например, к определенному разделу), вы добавите # к URL. Или может быть что-то вроде конфигурации фильтра, встроенной в URL https://test.com/deals/?sort=price&productsPerPage=15&page=2&minPrice=100.

Наконец, вы должны сделать регистр нечувствительным к регистру, чтобы учесть тот факт, что URL также может быть https://test.com/Deals/. То, как вы установите этот флаг, будет зависеть от того, где вы используете регулярное выражение, поэтому я просто добавляю это как напоминание.

...