“无限”URL的正则表达式

时间:2011-09-01 16:48:46

标签: regex .htaccess

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

/页/一些/事情/是/写/这里

其中/ 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 它崩溃了。

有什么建议吗? 感谢。

1 个答案:

答案 0 :(得分:3)

试试这个:

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

细分:

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

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

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

如果你想要一个可选的斜杠,试试这个:

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

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