В настоящее время я использую два регулярных выражения в этом плагине WordPress, называемые перенаправлением, чтобы отфильтровать определенные URL-адреса из журнала.

(еда) , чтобы найти все, что содержит слово food в любом месте URL.

((.js) | (.css)) $ для соответствия любому .js или .css в конце URL

Как мне объединить эти 2 регулярных выражения в 1 с И, чтобы я мог получить ожидаемый результат ниже?

ОЖИДАЕМЫЙ ВЫХОД:

https://example.com/food/test/apple.css - match
https://example.com/food/fruit/pineapple.css - match
https://example.com/food/fruit/apple.php - NOT match
https://example.com/food/new/strawberry.js - match

Я пробовал это в течение нескольких часов, но до сих пор не могу заставить его работать. Я плохо разбираюсь в Regex. Как заставить его работать с (food) AND ((.js) | (.css)) $

Я попробовал эту комбинацию ниже, но не смог. Пожалуйста, помогите мне. Заранее спасибо.

(food)&((.js)|(.css))$ 
(food)+((.js)|(.css))$ 
(food)/((.js)|(.css))$ 
0
Null 8 Окт 2018 в 21:29

2 ответа

Лучший ответ

Вы можете использовать

'~.*food.*\.(?:js|css)$~'

См. демонстрацию регулярных выражений.

Если /food/ должен быть там, используйте

'~.*/food/.*\.(?:js|css)$~'

Если вы просто проверяете соответствие, удалите первый .*.

< Сильный > Подробнее

  • .* - 0+ символов, максимально возможное количество
  • food - буквальная подстрока
  • .* - 0+ символов, максимально возможное количество
  • \.(?:js|css) - ., за которым следует js или css
  • $ - конец строки
1
Wiktor Stribiżew 8 Окт 2018 в 18:31

Чтобы найти слово food в любом месте URL-адреса и убедиться, что в конце находится .css или .js, вы можете присоединиться к ним с помощью чередование:

^https?://.*food.*\.(?:css|js)$

Используя разделители, которые будут:

'~^https?://.*food.*\.(?:css|js)$~'

< Сильный > Объяснение

  • ^ Утверждение начала строки
  • https?:// Сопоставьте http с необязательным s, а затем ://
  • .*food.* Сопоставьте любой символ ноль или более раз, затем сопоставьте еду, а затем сопоставьте любой символ 0 или более раз
  • \.(?:css|js)$ Сопоставьте точку, за которой следует группа без захвата, которая соответствует либо css, либо js, и подтвердите конец строки

Regex demo

0
The fourth bird 8 Окт 2018 в 19:03