如何使用express-validator npmvalidation密码
我正在使用节点编写rest API,表示web模块。 为了validation,我使用了express-validator npm。 我想在密码字段上应用一些validation规则。
我如何使用express-validator来实现它?
我要申请密码的validation规则如下:
- 最小8字长。
- 至less有一个大写字母。
- 至less有一个小写字母。
- 至less有一个特殊字符。
我在这个链接中读到有一个函数叫做regex() 。 所以我尝试了,但没有工作。
我的方法是:
req.check("password", "Password should be combination of one uppercase , one lower case, one special char, one digit and min 8 , max 20 char long").regex("/^(?=.*\d)(?=.*[az])(?=.*[AZ])[0-9a-zA-Z]{8,}$/", "i");
错误
在express-js中列出了所有的方法,但没有find解决我的问题的方法/技巧。
你指的链接已经快3年了。 此后, validator
的API发生了变化。
要检查正则expression式,请使用.matches()
:
req.check("password", "...").matches(/^(?=.*\d)(?=.*[az])(?=.*[AZ])[0-9a-zA-Z]{8,}$/, "i");
select的答案是不完整的,因为它缺less对特殊字符的validation。 正确答案应该是:
req.checkBody("password", "Password must include one lowercase character, one uppercase character, a number, and a special character.").matches(/^(?=.*\d)(?=.*[az])(?=.*[AZ])(?=.*[^a-zA-Z0-9]).{8,}$/, "i");
唯一真正的区别是,我添加了(?=.*[^a-zA-Z0-9])
expression式,以确保用户正在使用不是数字或字母的字符。
我相信答案已经过时了。 RegExp和express-validator并不是validation密码的最佳方法,因为正则expression式的模糊使得应用程序不可维护,容易出错。
密码validation器可以很容易地定义密码规则并进行维护。 这是一个示例:
var passwordValidator = require('password-validator'); var schema = new passwordValidator(); schema .is().min(8) .is().max(100 .has().uppercase() .has().lowercase(); console.log(schema.validate('notvalid'); // => false
PS:我是密码validation程序的作者。