我希望用户输入他的出生日期。我希望它的格式为YYYY-MM-DD。 Node-Validator现在验证所有日期格式,而不是特定格式。所以如果我输入12324433,它也会在它认为它的纪元时间时被验证。
请帮帮我,我该怎么办? 这个问题特定于Mongoose的验证
答案 0 :(得分:12)
我是express-form
的粉丝,值得一看 - 你也可以使用moment.js
。我出于这个原因自己使用了它
来自moment.js docs:
moment("2011-10-10", "YYYY-MM-DD").isValid(); // true
moment("2011-10-50", "YYYY-MM-DD").isValid(); // false (bad day of month)
干杯,我希望这会有所帮助:)
ps - moment.js github url以防万一。
答案 1 :(得分:2)
正如Node-Validator的文档指出的那样,“正则表达式可能是更好的选择”。 我掀起了一个看起来非常好的正则表达式,我相信它会完成工作,但我建议你彻底测试它,如果你打算使用它。
/\d\d\d\d-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1])/
此正则表达式将以您需要的格式YYYY-MM-DD验证日期。 您可以在此处查看使用它的工作代码段: http://tinker.io/c269b/
祝你好运!修改强> 我发现了一些破坏它的东西。此正则表达式验证部分匹配,因此像“1970-01-011”这样的输入检出有效。发生这种情况是因为我忘了在正则表达式中添加 start 和 end 标记。这就是我修复它的方式:
/^\d\d\d\d-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1])$/
Tinker上的示例也使用修复程序进行了更新。
答案 2 :(得分:0)