Express 如何设置一个指定文件名的路由,不用正则
发布于 11 年前 作者 romboo 4770 次浏览 最后一次编辑是 8 年前

app.get('/:file.css', fn),我希望这个 file 是任意长的路径,目前用正则的方式是:app.get("/:file([0-9a-zA-Z]+).css", fn),很奇怪正则用 .+ 不行,\w+ 貌似也不行,奇怪。

3 回复

给楼主标记了代码… app.get 字符串参数里不是使用正则的, 真要用正则也不能在字符串里写啊: http://expressjs.com/api.html#app.VERB

app.get(/^\/commits\/(\w+)(?:\.\.(\w+))?$/, function(req, res){
  var from = req.params[0];
  var to = req.params[1] || 'HEAD';
  res.send('commit range ' + from + '..' + to);
});

express可以我这样的写法少,实测有效的,express 4,3应该也可以的 你这个正则太长了,我就是不想用正则这么长 比如:app.get("/:file.html"),这个file可以是/folder/index.html,也可以是/foo/bar/xx.html,我只要这个扩展名匹配就可以了

re = /^\/(?:[^\/]+\/)*(.+)\.html$/
re.exec("/folder/index.html"); // ["/folder/index.html", "index"]

还是正则爽,捕获到的是filename

回到顶部