快速路线param正则表达式重复

时间:2017-11-24 12:13:22

标签: node.js regex express

我有一条路线,其中foo param应该是正整数,并且使用正则表达式限制并*星重复:

app.get('/foo/:foo([1-9][0-9]*)', fooHandler);

匹配/foo/10,但不匹配/foo/1网址(未调用路由处理程序),结果为404。

虽然

app.get('/foo/:foo([1-9])', fooHandler);

app.get('/foo/:foo([1-9][0-9]?)', fooHandler);

工作,但它们并未涵盖所有参数值。

为什么Express与[1-9][0-9]*正则表达式不匹配?如何修复以匹配所有正整数foo值?

1 个答案:

答案 0 :(得分:2)

您可以使用

app.get('/foo/:foo([1-9][0-9]{0,})', fooHandler);

而不是

app.get('/foo/:foo([1-9][0-9]*)', fooHandler);

我认为*在路线中有特殊意义,为什么会让事情复杂化?为什么不用{0,}替换它?顺便说一句,它有效,我查了一下。