Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用正则表达式进行续集验证_Node.js_Regex_Postgresql_Validation_Sequelize.js - Fatal编程技术网

Node.js 使用正则表达式进行续集验证

Node.js 使用正则表达式进行续集验证,node.js,regex,postgresql,validation,sequelize.js,Node.js,Regex,Postgresql,Validation,Sequelize.js,我试图在用户模型中使用正则表达式来验证密码字段。但由于某些原因,它不起作用。我已经检查了sequelize文档,它说验证应该在创建、更新和保存上自动运行 我试过使用is和自定义验证器checkPassword。两者都没有返回任何错误。有人能解释一下我做错了什么吗 这是我的用户模型 从'../../utils/error'导入{CustomError}; module.exports=(sequelize,数据类型)=>{ const User=sequelize.define( “用户”, {

我试图在用户模型中使用正则表达式来验证密码字段。但由于某些原因,它不起作用。我已经检查了sequelize文档,它说验证应该在
创建
更新
保存
上自动运行

我试过使用
is
和自定义验证器
checkPassword
。两者都没有返回任何错误。有人能解释一下我做错了什么吗

这是我的用户模型

从'../../utils/error'导入{CustomError};
module.exports=(sequelize,数据类型)=>{
const User=sequelize.define(
“用户”,
{
名字:DataTypes.STRING,
lastName:DataTypes.STRING,
电邮:{
allowNull:错,
独一无二:没错,
类型:DataTypes.STRING,
验证:{
isEmail:是的
}
},
密码:{
allowNull:错,
类型:DataTypes.STRING,
验证:{
检查密码(值){
如果(
!/^(?=.[a-z])(?=.[a-z])(?=.*\d)(?=.[#$^+=!*()@%&])。{8,}$/.测试(
价值
)
) {
抛出新的CustomError(400,“提供有效密码!”);
}
},
是:{
参数:/^(?=.[a-z])(?=.[a-z])(?=.*\d)(?=.[$^+=!*()@%&]){8,}$/,,
味精:
'密码必须至少包含8个字符,包括至少1个大写字母、1个小写字母和1个数字。'
}
}
}
},
{}
);
User.associate=功能(模型){
User.hasMany(models.Post{
外国人:是的,
foreignKey:'userId'
});
User.hasMany(models.Comment{
foreignKey:'userId',
foreignKeyConstraint:正确
});
};
返回用户;
}

好吧,我想出来了。验证不起作用的原因是因为我已经在对密码进行哈希运算,所以它正在传递验证规则。现在,我已经将验证移动到从用户处获取密码的位置

您可以使用下面的方法验证密码

validate: {
      validatePassword: function(password) {
                    if(!(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,12}$/.test(password))) {
                        throw new Error('The password must contain at least 10 and maximum 12 characters including at least 1 uppercase, 1 lowercase, one number and one special character.');
                    }
                }
            },
这里有一个用于密码字符串检查的不同正则表达式

  • 至少十个字符,至少一个字母和一个数字:
  • “^(?=[A-Za-z])(?=。\d)[A-Za-z\d]{10,}$”

  • 至少十个字符、至少一个字母、一个数字和一个特殊字符:
  • “^(?=[A-Za-z])(?=.\d)(?=[A-Za-z]、[A-Za-z\d$!%*?&]{10,}$”

  • 至少10个字符,至少一个大写字母、一个小写字母和一个数字:
  • “^(?=[a-z])(?=[a-z])(?=.*\d)[a-zA-z\d]{10,}$”

  • 至少10个字符,至少一个大写字母、一个小写字母、一个数字和一个特殊字符:
  • “^(?=.[a-z])(?=.[a-z])(?=.\d)(?=.[@$!%?&])[a-Za-z\d$!%?&]{10,}$”

  • 最少10个字符,最多12个字符,至少一个大写字母、一个小写字母、一个数字和一个特殊字符:
  • “^(?=.[a-z])(?=.[a-z])(?=.\d)(?=.[@$!%?&])[a-Za-z\d$!%?&]{10,12}$”