regex - "infinite"URL 的正则表达式

标签 regex .htaccess

我正在尝试为此模式创建匹配:

/page/some/thing/is/writing/here

其中/page 始终匹配 a-zA-Z0-9 并且/page 之后的所有内容都可以包含字符 a-zA-Z0-9-/ 我的想法是“页面”始终是用户将看到的页面,其余的都是参数,以/(p1/p2/p3) 等分隔。

这就是我想出的:^([a-zA-Z]+)/([A-Za-z0-9-/]+)$ 它一直有效到 3 个斜杠:page/is/nice

但是如果我添加另一个参数,如下所示:page/is/nice/crash 它崩溃了。

有什么建议吗? 谢谢。

最佳答案

试试这个:

^/?[a-zA-Z]+(/[A-Za-z0-9]+)*$

分割:

  • ^ - 主 anchor
  • /? - 它可能以斜线开头
  • [a-zA-Z]+ - 一个或多个字母
  • (/[A-Za-z0-9]+)* - 零个或多个/字母数字(至少有一个字母数字)
  • $ - 结束 anchor

如果不需要捕获结尾,则应使用非捕获组:

^/?[a-zA-Z]+(?:/[A-Za-z0-9]+)*$    

如果您想在末尾添加一个可选的斜杠,请尝试以下操作:

^/?[a-zA-Z]+(?:/[A-Za-z0-9]+)*/?$

注意:您可能需要根据您的编程语言来分隔斜杠。

关于regex - "infinite"URL 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7273622/

相关文章:

regex - sed 在第 n 次出现后替换任何内容

css - 字体样式斜体有时在 Firefox 中不起作用

.htaccess - 如何隐藏所有控制台错误

regex - 正则表达式删除括号和前面的空格

java - 使用找到的模式从 Java 正则表达式匹配器获取 NULL 值

regex - 在 Go 中的空格上拆分字符串?

java - 为 Java 应用程序筛选格式不佳的 XHTML 页面的最佳方法是什么

apache - .htaccess http 到 https 和 mvc 查询字符串

.htaccess - Google Page Speed 利用浏览器缓存未标记为已解决

php - 如何制作像 url 这样的个人资料?