Javascript 匹配除'以外的所有路线/';快递
我正在尝试通过检查cookies为我的应用程序创建身份验证机制。所以我添加了Javascript 匹配除'以外的所有路线/';快递,javascript,regex,node.js,express,Javascript,Regex,Node.js,Express,我正在尝试通过检查cookies为我的应用程序创建身份验证机制。所以我添加了路由器。all('*')来匹配每个请求,检查cookie,然后转到实际的处理程序。但我需要它只匹配在“/”之后有一个或多个字符的请求。(我想匹配/manage、/m或/about,但不匹配/) 根据答案,您可以使用正则表达式进行路径匹配,但我不太明白什么是'*'。它可能匹配所有东西,但在我看来它不像正则表达式 为什么'*'匹配/ 我需要向all()提供什么参数来匹配/about,而不是/ 只需将*放在最后。路由器按照定义
路由器。all('*')
来匹配每个请求,检查cookie,然后转到实际的处理程序。但我需要它只匹配在“/”之后有一个或多个字符的请求。(我想匹配/manage
、/m
或/about
,但不匹配/
)
根据答案,您可以使用正则表达式进行路径匹配,但我不太明白什么是'*'
。它可能匹配所有东西,但在我看来它不像正则表达式
'*'
匹配/
all()
提供什么参数来匹配/about
,而不是/
只需将
*
放在最后。路由器按照定义的顺序进行检查
因此:
然后
请记住,
/
对*
仍然有效,因此来自/
的next()
调用将触发全面捕获过程。仅由星号('*'
)组成的路径意味着“匹配任何内容”,它本身只包括主机名
为了只“匹配某物”,请使用带加号运算符的点组,这意味着“至少匹配任何东西一次”
有时候,你问题的解决方案不是你问题的答案,而是问题的解决方案。
//Assuming a request for '/', this gets called first
router.all('*', function (request, response, next) {
//Stuff happening
next();
});
//This gets called on next(), which I do not want
router.get('/', function (request, response) {
//Stuff happening
});
//However this I do want to be matched when requested and therefore called after router.all()
router.post('/about', function (request, response) {
//Stuff happening
});
router.get('/' ...
router.all('*' ...
router.all(/\/^.+$/, () => {
// ...
})