我们正在使用expressJwt库,我希望能够排除GET
对于以下路线api/items/:id
但不包括任何看起来像的路线api/items/:id/special-action
.
到目前为止,我只能排除所有具有:id
.
下面是我们如何实现排除GET
路线有:id
.
this.app.use(expressJwt({ secret: secrets.JWT }).unless({
path: [
...
{ url: /\/api\/items\/(.)/, methods: ['GET'] },
...
]
});
我试过了{ url: /\/api\/items\/(.)\//, methods: ['GET'] }
但它不匹配任何路线,因此没有路线:id
被排除在外。
我使用正则表达式的方式有些不对劲,但我很难发现它。我需要更改(.)
不匹配所有?我想它可能与尾部斜杠匹配
您可以使用
/^\/api\/items\/([^\/]*)$/
The [^\/]*
否定字符类匹配 0 个或多个字符/
和^
/ $
锚点确保该模式将针对整个字符串进行尝试。
See the 正则表达式演示 https://regex101.com/r/BPmBlS/1.
Details
-
^
- 字符串锚点的开始
-
\/api\/items\/
- 匹配文字/api/items/
子串
-
([^\/]*)
- 捕获组 1:任何 0+ 字符以外的字符/
.
-
$
- 绳锚的末端。
请注意,如果您想确保[^\/]*
has no /
之后,添加一个$
绳子末端的锚点在末端。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)