在我的路由目录中,有一个节点和Express.js网络应用程序,我有以下代码:
var router = express.Router();
router.get(htmlExt('index/:fileName'), function(req, res){
console.log(req.params.fileName);
});
但是,req.params.fileName
仅返回:fileName的第一个字母。我已多次检查我的代码,但我找不到这个有什么问题。有什么想法吗?
答案 0 :(得分:1)
好的,这就是我认为发生的事情:
/index/:fileName
/index/:fileName|index/:fileName.html
/^\/index\/([^\/]+?)|index\/([^\/]+?)\.html(?:\/(?=$))?$/i
/^\/index\/([^\/]+?)/i
或 /index\/([^\/]+?)\.html(?:\/(?=$))?$/i
”(?:\/(?=$))?$
,因此很乐意仅匹配该匹配组中的第一个字符。我使用Express Route Tester来了解生成正则表达式的样子。 (注意:该工具实际上并不支持Express路由器的模式匹配部分,因此我必须在下一步中完成一点点捏造(我从管道前移除了逃逸) )。
然后我使用https://regex101.com/r/kN5kW9/1来弄清楚目标是什么。