【问题标题】:Parameters validation with Express using Regular Expressions使用正则表达式的 Express 参数验证
【发布时间】:2012-11-02 22:36:41
【问题描述】:

我想使用正则表达式验证 Express(和 express-param)中的 http 请求参数。 此参数必须是至少 11 位的数字。

为什么app.param('uid', /^[0-9]{11,}+$/); 返回错误?

为什么app.param('uid', /^[0-9]{11,}/); 不能正常工作? 它阻止1234567890c 之类的参数并接受12345678901c12345678901ca

【问题讨论】:

  • 好吧,后者没有指定字符串必须在这 11 位数字之后结束。因此,如果至少有 11 位数字,那么任何东西都可以跟随。第一个错误是什么?
  • 编译时返回错误。 SyntaxError: Invalid regular expression: /^[0-9]{11,}+$/: Nothing to repeat at new RegExp (unknown source)

标签: regex node.js express


【解决方案1】:

您的两种模式不一致。第一个(这是一个无效的正则表达式)有一个结尾 $ 指定输入必须匹配您的模式直到字符串的末尾。问题是你在数字后面有一个+,这会导致它无效,因为你指定了它应该已经用{11,}重复的次数。

第二个模式同时删除了+$。删除+ 是完美的,但是,当您删除$ 时,您会说之后的任何数字都可以出现。

尝试在第二个模式中添加$

app.param('uid', /^[0-9]{11,}$/);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多