【发布时间】:2015-03-01 22:02:05
【问题描述】:
所以,我尝试制作一个小的正则表达式来获取请求的 URL,减去开头的斜杠。
有个小问题,尾部的斜线不会一直存在,例如如果用户请求"/test/example/",他们也可以请求"/test/example"。所以我尝试了一种方法来处理它:
req.url.match(/^(?:\/)(.+)(?:[\/])?$/i)[1]
虽然,如果我请求像"/test/example/" 这样的路径,它会保留尾部斜杠,并在捕获组中返回"test/example/"...?基本上是我想避免的。 (所以,它所做的只是删除起始斜线)
现在,我尝试删除 $ 符号旁边的 ?。但这只会在请求"/test/example" 时导致错误(没有尾部斜杠),因为[1] 将为空。
我在 regex101 上做了一个例子,you can view here。如您所见,捕获组包含结尾斜杠,尽管在我的表达中,我认为我告诉它不要这样做。
TL;DR:Regex 仍在捕获尾部斜杠,即使我不想这样做(请记住,尾部斜杠不会始终存在)。
为了澄清,我希望正则表达式这样做:
"/test/example/" 到 "test/example"
和
"/test/example" 到 "test/example"
(所以,去掉开头和结尾的斜线,但结尾的斜线是可选的)
【问题讨论】:
-
@MoshMage 感谢您提供的好资源。
标签: javascript regex node.js