You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整PHP正则preg_match规则仅匹配指定URL模式

调整PHP正则表达式,限定只匹配特定URL

没问题,咱们可以通过修改正则里的匹配规则,精准锁定你需要的那两种URL。先看你的原始正则:

/^(en\/|)([\d]{1,3})([-])(.+?)([\/])$/

它之所以会匹配带子路径的URL(比如12-blog/blog2/),核心原因是.+?会匹配任意字符(包括斜杠),直到遇到最后的斜杠。咱们只需要把这部分改成不能匹配斜杠,就能排除带二级路径的情况。

修改后的正则如下:

/^(en\/)?(\d{1,3})-([^\/]+)\/$/

关键改动说明:

  • 把开头的(en\/|)简化成(en\/)?,功能完全一致,但写法更简洁,?表示这部分是可选的(0次或1次匹配)
  • 把原来的(.+?)换成([^\/]+):[^\/]是正则里的否定字符集,意思是匹配除了斜杠/之外的任意字符,这样就彻底避免了匹配到子路径里的斜杠,从根源上排除带二级路径的URL
  • 去掉了没必要的单独捕获组(比如把([-])直接写成-),如果需要保留原始的捕获组结构,也可以用下面的写法,效果完全相同:
/^(en\/|)([\d]{1,3})([-])([^\/]+)([\/])$/

验证效果:

  • ✅ 成功匹配:12-blog/、en/12-blog/
  • ❌ 无法匹配:12-blog/blog2/、en/12-blog/blog2/

内容的提问来源于stack exchange,提问作者Nick Zulu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:02:13