在node.js express中,我使用bellow regex。
router.get('/test/:name(\\w{1,10}([\-]{1}\\w{0,15}){0,5})', (req, res) => {
console.log(c.green, 'It works!');
res.send('name is:' + req.params.name);
});
正确的格式是:
-
单词1(最多15个字符)
-
Word1-Word2
-
word1-word2[-word3]…(最多5个,每个字符最多15个,强制使用“-”号)
-
带下划线的单词_-一些其他单词-……(IDEM)
过滤器工作,但是…结果改变了。这怎么可能呢?!
结果是:1&2-正确,
因为3是:“2-word3”。它改变了参数!
任何其他参数我测试,我只是从前一个词+'-'+最后一个词得到最后一个字符。
我避免使用“*”,因为众所周知nodejs有一个当前的问题,这个问题将在下一个主要版本中解决。我用它进行测试,它很好地工作,发送时我可以看到参数,但它也允许我要禁止的所有字符,比如:??:等等。
问题1:为什么Regex会改变我的参数????!
问题2:我该怎么做才对?在node.js中,我在regex101.com上测试了几个版本,它们在那里工作得很好,但在node.js中没有。