我正在nodejs中创建一个中间件函数并表达js框架,我想检查url是否包含一个数字或者不是这样的
/ invoices / 21或/ invoices / 45
所以我试图做这样的事情
if (req.path.startsWith('/invoices/[^0-9]') {
next();
}
但我收到错误我仍然无法这样做,任何人都可以提示。
答案 0 :(得分:0)
你不能使用这样的RegExp。 startsWith只接受一个字符串。此代码创建一个RegExp,并使用match来检查字符串是否与RegExp匹配。
if (req.path.match(new RegExp('/invoices/[^0-9]'))) { // create a regexp and check if it matches
next();
}
答案 1 :(得分:0)
startsWith接收字符串而非正则表达式。在这种情况下,您可以使用match。
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();
}
您可以在jsfiddle中查看。
答案 2 :(得分:0)
最快的方法是查看RegExp
if(RegExp(/^\/invoices\/[0-9]/).test(req.path)){
// do something
}
答案 3 :(得分:0)
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
您使用的是什么版本的快递?我只能通过req.originalUrl访问路径,没有req.path。