我有一条路线,其中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
值?
答案 0 :(得分:2)
您可以使用
app.get('/foo/:foo([1-9][0-9]{0,})', fooHandler);
而不是
app.get('/foo/:foo([1-9][0-9]*)', fooHandler);
我认为*
在路线中有特殊意义,为什么会让事情复杂化?为什么不用{0,}替换它?顺便说一句,它有效,我查了一下。