密码格式 密码强度 正则表达式

本文介绍了一种密码强度测试算法,确保密码符合特定的安全标准。密码必须在8到16个字符之间,且需包含大写字母、小写字母、数字及特殊符号中的至少三种组合,同时禁止使用空格和中文字符。

密码长度8——16个字符,且区分大小写;
不能使用空格、中文
密码需要使用大写字母、小写字母、数字及特殊符号中至少三种的组合

change = (e) => {
const Epwd = e.target.value;
const chinese = /[\u4E00-\u9FA5\uF900-\uFA2D\u0020]/;
 // 包含大小写字母、数字、特殊字符至少3个组合大于8个字符
const testPassword = /^(?![A-Za-z]+$)(?![A-Z\d]+$)(?![A-Z\W]+$)(?![a-z\d]+$)(?![a-z\W]+$)(?![\d\W]+$)\S{8,16}$/;
if (testPassword.test(Epwd) === false || chinese.test(Epwd) === true) {
      this.setState({
        Judge: false,// 为false时密码格式不正确
      })
    } else {
      this.setState({
        Judge: true,// 为true时密码格式正确
      })
    }
    // 密码强度
    const QD = this.panduan(Epwd);
    this.setState({
      list: QD
    })
}
panduan = (Epwd) => { // 密码强度测试
    let modes = 0;
    if (Epwd.length < 8) return 0;
    if (/\d/.test(Epwd)) modes++; // 数字
    if (/[a-z]/.test(Epwd)) modes++; // 小写
    if (/[A-Z]/.test(Epwd)) modes++; // 大写  
    if (/\W/.test(Epwd)) modes++; // 特殊字符
    if (Epwd.length > 12) modes++;
    return modes;
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值