element-ui弱密码检测和再次输入检测

定义密码验证规则: 这些规则将用于el-form的rules属性

addRules: {
	userPwd: [
                {required: true, message: '不能为空', trigger: 'blur'},
                {
                    message: '格式:包含英文、数字以及@$_特殊字符,长度8-16',
                    pattern: /^(?![0-9@$_!#%^&*?]+$)(?![a-zA-Z@$_!#%^&*?]+$)[0-9A-Za-z@$_!#%^&*?]{8,16}$/
                },
                { validator: (rule, value, callback) => {
                        const minLength = 8; // 最小长度
                        const hasUpperCase = /[A-Z]/.test(value); // 是否包含大写字母
                        const hasLowerCase = /[a-z]/.test(value); // 是否包含小写字母
                        const hasNumber = /[0-9]/.test(value); // 是否包含数字
                        const hasSpecialChar = /[!@#$%^&*(),.?":{}|<>]/.test(value); // 是否包含特殊字符

                        // 评估密码强度
                        let strength = 0;
                        if (value.length >= minLength) strength++;
                        if (hasUpperCase) strength++;
                        if (hasLowerCase) strength++;
                        if (hasNumber) strength++;
                        if (hasSpecialChar) strength++;

                        // 根据强度返回结果
                        if (strength >= 4) {
                            callback();
                        } else if (strength >= 2) {
                            callback(new Error("密码较弱,请使用字母大小写、数字和特殊字符的组合"));
                        } else {
                            callback(new Error("密码较弱,请使用字母大小写、数字和特殊字符的组合"));
                        }
                        if (value === '') {
                            callback(new Error('请再次输入密码'));
                        } else if (value !== this.data.addForm.userPwd) {
                            callback(new Error('两次输入密码不一致!'));
                        } else {
                            callback();
                        }
                    }, trigger: 'blur', required: true }
            ],  userPwdv: [
                {required: true, message: '不能为空', trigger: 'blur'},
                {
                    message: '格式:包含英文、数字以及@$_特殊字符,长度8-16',
                    pattern: /^(?![0-9@$_!#%^&*?]+$)(?![a-zA-Z@$_!#%^&*?]+$)[0-9A-Za-z@$_!#%^&*?]{8,16}$/
                },
                { validator: (rule, value, callback) => {
                        if (value === '') {
                            callback(new Error('请再次输入密码'));
                        } else if (value !== this.data.addForm.userPwd) {
                            callback(new Error('两次输入密码不一致!'));
                        } else {
                            callback();
                        }}, trigger: 'blur', required: true }
            ],
}

<el-form :model="form" :rules="addRules" ref="form">
  <el-form-item label="密码" prop="password">
    <el-row :gutter="30">
       <el-col :span="20">
             <el-form-item label="密码" prop="userPwd">
                 <el-input v-model="form.userPwd" type="password" show-word-limit
                           maxlength="15"
                           clearable show-password></el-input>
             </el-form-item>
         </el-col>
     </el-row>
     <el-row :gutter="30" style="padding-top: 2%;">
         <el-col :span="20">
             <el-form-item label="确认密码" prop="userPwdv">
                 <el-input v-model="form.userPwdv" type="password" show-word-limit
                           maxlength="15"
                           clearable show-password></el-input>
             </el-form-item>
         </el-col>
     </el-row>
  </el-form-item>
  <!-- ... 其他表单项 -->
  <el-form-item>
    <el-button type="primary" @click="submitForm('form')">提交</el-button>
  </el-form-item>
</el-form>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Heart&Fire

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值