![]()
<el-form-item label="设置密码" prop="pass">
<el-input type="password" v-model="ruleForm.pass" autocomplete="off" placeholder="请输入密码" show-password></el-input>
</el-form-item>
<el-form-item label="确认密码" prop="checkPass">
<el-input type="password" v-model="ruleForm.checkPass" autocomplete="off" placeholder="请再次确认密码" show-password></el-input>
</el-form-item>
data(){
var validatePass = (rule, value, callback) => {
if (value === '') {
callback(new Error('请输入密码'));
} else {
if (this.ruleForm.checkPass !== '') {
this.$refs.ruleForm.validateField('checkPass');
}
callback();
}
};
var validatePass2 = (rule, value, callback) => {
if (value === '') {
callback(new Error('请再次输入密码'));
} else if (value !== this.ruleForm.pass) {
callback(new Error('两次输入密码不一致!'));
} else {
callback();
}
};
var checkPassword = (rule,value,callback) =>{
if (value.length >= 8 && /^[*]+$/.test(value)) {
callback();
return;
}
const regex = /(?!^[a-zA-Z]+$)(?!^[A-Z0-9]+$)(?!^[A-Z\W_]+$)(?!^[a-z0-9]+$)(?!^[a-z\W_]+$)(?!^[0-9\W_]+$)^[^\s\u3002\uff1b\uff0c\uff1a\u201c\u201d\uff08\uff09\u3001\uff1f\u300a\u300b\u4e00-\u9fa5]{8,20}/;
if (!regex.test(value)) {
callback(new Error("密码由8-20个字符组成,必须包含大小写字母,数字或标点符号(除空格)"));
} else {
callback();
}
}
return{
ruleForm: {
pass: '',
checkPass: ''
},
rules: {
pass: [
{ validator: validatePass, trigger: 'blur' },
{ validator: checkPassword, trigger:'blur' }
],
checkPass: [
{ validator: validatePass2, trigger: 'blur' }
]
},
}
},