亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

正則表達式 - PHP - 匹配多級 URL 路徑

正則表達式 - PHP - 匹配多級 URL 路徑

PHP
泛舟湖上清波郎朗 2023-07-08 17:24:02
我一直在嘗試創建一個正則表達式來匹配 URL 路徑的某個部分,但不可否認的是,我以前的正則表達式經驗很少,并且在閱讀了幾個小時的各種正則表達式教程后,我似乎陷入了困境。此時我的錯誤可能非常簡單,但我什至不確定要搜索什么以及我需要什么類型的正則表達式運算符(我查看了一大堆其他問題,雖然有些問題相似,但我沒有找不到完全匹配)。我必須匹配下面的任何 URL 路徑:/服務/服務//服務/頁面/2/服務/頁面/140/但它不應與以下任何一項匹配:/服務/頁面/servicesx/頁面/服務/頁面 /服務/頁面//服務/頁面/服務/頁面/2//服務/foo/服務/foo/頁面我需要匹配斜杠 / 后跟“服務”,可選地后跟斜杠,然后精確地跟隨頁面和斜杠以及任意數量的數字和可選的尾部斜杠,或者如果不精確跟隨,則不應跟隨任何其他內容?!皃age”后面應該始終有數字,否則“service”后面沒有數字的“page”也是無效的,“services”后面不能有任何其他內容。我一直在使用這個工具進行實驗: https: //regex101.com/到目前為止,我已經想出了這個正則表達式,它不起作用,因為它仍然匹配太多(它匹配“/services/”)。\/\bservices\b\/?(?:page\/[0-9]+)?\/?如果重要的話,我需要在 PHP 中使用正則表達式。
查看完整描述

1 回答

?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

您的正則表達式缺少字符串開頭和結尾錨點,這就是它匹配/services/您不想匹配的 URL 的原因。此外,您不需要\b其中的斷言,因為/之前和之后services意味著這\b將是正確的。最后,如果您更改分隔符(例如更改為~),則無需轉義正則表達式中的正斜杠。這將做你想做的事:

^/services/?(?:page/[0-9]+)?/?$

regex101 演示


查看完整回答
反對 回復 2023-07-08
  • 1 回答
  • 0 關注
  • 197 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號