Javascript 匹配除'以外的所有路线/';快递

Javascript 匹配除'以外的所有路线/';快递,javascript,regex,node.js,express,Javascript,Regex,Node.js,Express,我正在尝试通过检查cookies为我的应用程序创建身份验证机制。所以我添加了路由器。all('*')来匹配每个请求,检查cookie,然后转到实际的处理程序。但我需要它只匹配在“/”之后有一个或多个字符的请求。(我想匹配/manage、/m或/about,但不匹配/) 根据答案,您可以使用正则表达式进行路径匹配,但我不太明白什么是'*'。它可能匹配所有东西,但在我看来它不像正则表达式 为什么'*'匹配/ 我需要向all()提供什么参数来匹配/about,而不是/ 只需将*放在最后。路由器按照定义

我正在尝试通过检查cookies为我的应用程序创建身份验证机制。所以我添加了
路由器。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(/\/^.+$/, () => {
      // ...
    })