var str = '/invoices/120';
if (str.match(/^\/invoices\/\d+/)) { // return truly value
next(); // gets executed
}
var str = '/invoices/abc';
if (str.match(/^\/invoices\/\d+/)) { // return falsy value
next();
}
const re = /^\/invoices(\/.*)?\/\d*\//
if(re.test(req.originalUrl.toLowerCase())) {
// include a number
}
//'/invoices/kk/190/foo' will pass
//'/invoices/kk/190k/foo' won't pass
5条答案
按热度按时间nzk0hqpo1#
最快的方法是使用
RegExp
进行检查vawmfj5a2#
不能像这样使用RegExp。startsWith只接受一个字符串。这段代码创建了一个RegExp,并使用match检查该字符串是否与RegExp匹配。
xam8gpfp3#
startsWith接收字符串而不是正则表达式。在这种情况下可以使用match。
您可以在jsfiddle中查看它。
pgvzfuti4#
你用的是什么版本的express?我只能通过req.originalUrl访问路径,没有req.path。
tyky79it5#
简化Naman的回答;
如果您正在检查中间件中符合条件的每个URL,您可以这样测试:
这假定您现在使用的是最新版本的Express。