Javascript 使用app.param()将字符串与扩展名匹配

Javascript 使用app.param()将字符串与扩展名匹配,javascript,regex,node.js,express,Javascript,Regex,Node.js,Express,我一直在Node.js中构建一个简单的站点,作为Imgur图像和相册的代理,用于被阻止的国家。Imgur URL有几种类型: http://i.imgur.com/fiQ3A2t.jpg => Shows direct image http://i.imgur.com/fiQ3A2t => Redirects to http://i.imgur.com/fiQ3A2t.jpg http://imgur.com/fiQ3A2t => Loads gallery page 我使用

我一直在Node.js中构建一个简单的站点,作为Imgur图像和相册的代理,用于被阻止的国家。Imgur URL有几种类型:

http://i.imgur.com/fiQ3A2t.jpg => Shows direct image
http://i.imgur.com/fiQ3A2t => Redirects to http://i.imgur.com/fiQ3A2t.jpg
http://imgur.com/fiQ3A2t => Loads gallery page
我使用的是Express.js,我试图做的就是告诉大家URL之间的区别。第一个URL不需要API调用,而另外两个则需要API调用才能获得直接的图像链接。到目前为止,我使用的是:

app.get('/:image', function(req, res){
  res.send('Requested image ' + req.params.image);
});
但是,这匹配所有内容(我只需要
.com/
之后的所有内容)。这意味着如果我输入像
mysite.com/fiQ3A2t.jpg这样的url,我无法区分直接链接和需要Imgur API调用的链接

为了解决这个问题,我尝试使用正则表达式来匹配有扩展名的URL和没有扩展名的URL:

// Check for file extension
app.param('image', /\.(jpe?g|png|gif)$/gi);

app.get('/:image', function(req, res){
  res.send('Requested image ' + req.params.image);
});
但是,尝试运行时会引发以下错误:

Error: invalid param() call for image, got /\.(jpe?g|png|gif)$/gi
我如何处理
fiQ3A2t.jpg
不同于
fiQ3A2t
?理想情况下使用Express内置的
.param
方法,但我对一切都持开放态度。仅为了上下文,最终的站点将被创建,以便您可以用
mydomain
替换任何图像链接中的
imgur
,并显示图像。

possi使用
app.get('/:image(\.(jpe?g | png | gif)$/gi)
复制@cpancae,因为
中的建议结果无法在每次请求时获取
错误。