我想使用正则表达式验证Express(和express-param)中的http请求参数。 此参数必须是至少包含11位数的数字。
为什么app.param('uid', /^[0-9]{11,}+$/);
会返回错误?
为什么app.param('uid', /^[0-9]{11,}/);
不能正常工作?
它会屏蔽1234567890c
之类的参数并接受12345678901c
或12345678901ca
。
答案 0 :(得分:1)
您的两种模式不一致。第一个(这是一个无效的正则表达式)有一个结尾$
,指定输入必须匹配您的模式直到字符串的结尾。问题是您在数字之后有一个+
因为您指定它应该与{11,}
重复的次数导致它无效。
第二种模式同时删除了+
和$
。但是,删除+
是完美的,当您放弃$
时,之后 之后可以显示任何
尝试在第二种模式中添加$
:
app.param('uid', /^[0-9]{11,}$/);