PHP соответствие URL регулярного выражения - PullRequest
1 голос
/ 06 августа 2020

У меня есть пример:

mysite.com/tag/HD+Wallpaper           //match
mysite.com/tag/HD+Wallpaper/          //match
mysite.com/tag/HD+Wallpaper?page=     //match
mysite.com/tag/HD+Wallpaper/?page=    //match
  
mysite.com/tag/HD+Wallpaper/sdadasdas    //not match

с параметром «HD + Wallpaper»

я пробую:

^tag/(.+?)(|\/|\?(.*?))$i

Как я могу это исправить? TY

Ответы [ 3 ]

0 голосов
/ 06 августа 2020

Это регулярное выражение должно работать для вас:

tag\/([^\/]*?)(?=\/$|\/\?|\?|$)

Демо

0 голосов
/ 06 августа 2020

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

tag/[^/\s]+(?:/(?:\?.*)?)?$

Объяснение

  • tag/ Буквальное соответствие (возможно, /tag/ или \btag будет более конкретным c)
  • [^/\s]+ Соответствует 1+ вхождению любого символа, кроме / или пробельного символа
  • (?: Группа без захвата
    • /(?:\?.*)? Соответствие /, за которым следует необязательная часть для соответствия ? и остальной части строки
  • )? Закройте группу и сделайте ее необязательной
  • $ Конец строка

Regex demo

0 голосов
/ 06 августа 2020

Вы можете попробовать следующее регулярное выражение

tag\/.*?(?=\/|\?|$)

Демо

Примечание: в демонстрации я добавил backsla sh \ для escape /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...