我一直在嘗試創(chuàng)建一個(gè)正則表達(dá)式來(lái)匹配 URL 路徑的某個(gè)部分,但不可否認(rèn)的是,我以前的正則表達(dá)式經(jīng)驗(yàn)很少,并且在閱讀了幾個(gè)小時(shí)的各種正則表達(dá)式教程后,我似乎陷入了困境。此時(shí)我的錯(cuò)誤可能非常簡(jiǎn)單,但我什至不確定要搜索什么以及我需要什么類型的正則表達(dá)式運(yùn)算符(我查看了一大堆其他問(wèn)題,雖然有些問(wèn)題相似,但我沒(méi)有找不到完全匹配)。我必須匹配下面的任何 URL 路徑:/服務(wù)/服務(wù)//服務(wù)/頁(yè)面/2/服務(wù)/頁(yè)面/140/但它不應(yīng)與以下任何一項(xiàng)匹配:/服務(wù)/頁(yè)面/servicesx/頁(yè)面/服務(wù)/頁(yè)面 /服務(wù)/頁(yè)面//服務(wù)/頁(yè)面/服務(wù)/頁(yè)面/2//服務(wù)/foo/服務(wù)/foo/頁(yè)面我需要匹配斜杠 / 后跟“服務(wù)”,可選地后跟斜杠,然后精確地跟隨頁(yè)面和斜杠以及任意數(shù)量的數(shù)字和可選的尾部斜杠,或者如果不精確跟隨,則不應(yīng)跟隨任何其他內(nèi)容?!皃age”后面應(yīng)該始終有數(shù)字,否則“service”后面沒(méi)有數(shù)字的“page”也是無(wú)效的,“services”后面不能有任何其他內(nèi)容。我一直在使用這個(gè)工具進(jìn)行實(shí)驗(yàn): https: //regex101.com/到目前為止,我已經(jīng)想出了這個(gè)正則表達(dá)式,它不起作用,因?yàn)樗匀黄ヅ涮啵ㄋヅ洹?services/”)。\/\bservices\b\/?(?:page\/[0-9]+)?\/?如果重要的話,我需要在 PHP 中使用正則表達(dá)式。
1 回答

千萬(wàn)里不及你
TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
您的正則表達(dá)式缺少字符串開頭和結(jié)尾錨點(diǎn),這就是它匹配/services/
您不想匹配的 URL 的原因。此外,您不需要\b
其中的斷言,因?yàn)?code>/之前和之后services
意味著這\b
將是正確的。最后,如果您更改分隔符(例如更改為~
),則無(wú)需轉(zhuǎn)義正則表達(dá)式中的正斜杠。這將做你想做的事:
^/services/?(?:page/[0-9]+)?/?$
- 1 回答
- 0 關(guān)注
- 207 瀏覽
添加回答
舉報(bào)
0/150
提交
取消