我正在尝试为此模式创建匹配:
/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/