我们的 Web 应用程序允许用户指定他们自己的“slugs”,其中可以包括相对路径,例如 /somedir/some-file.htm。
在我们的路由配置中,我们需要确保仅支持有效的 slug(带段)。
我正在使用的正则表达式是:
(^[a-z0-9])([a-z0-9-/]+)([a-z0-9])$
这表示:
- 一个有效的 slug 将匹配例如 some-file.htm
- 带有段(相对路径)的有效 slug 将匹配例如 somedir/subdir/some-file.htm
- 绝对 URL 将不匹配,例如 /somedir/some-file.htm
- 尾随 / 或 - 将不匹配,例如 -slug-
不幸的是,这也意味着双斜杠将匹配例如 somedir//subdir//some-file.htm,因为我的表达式允许一个或多个斜杠。
如何更改它以允许段之间有零个或多个斜杠。
我以为:
(^[a-z0-9])(/?[a-z0-9-]+/?)([a-z0-9])$
会工作,但它不会。