<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' } ] }, } },