生成包括大小写字母数字以及符号的密码且不能有连续或者倒叙以及其校验

一 : 生成随机密码

生成随机密码
// 随机生成密码方法 
function randomPassword(min: number, max: number) {
    let str = ""
    let arr =
        ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u",
            "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
            '`', '~', '@', '#', '$', '%', '^', '&',
            '*', '(', ')', '-', '_', '=', '+', '[',
            '{', '}', ']', '|', ';', ':', ',', '<', '.', '>', '?']
    let range = Math.round(Math.random() * (max - min)) + min
    for (let i = 0; i < range; i++) {
        let pos = Math.round(Math.random() * (arr.length - 1));
        str += arr[pos]
    }

    return str
}

校验

1. 判断生成密码不可以连续或者倒叙方法
 // 判断生成密码不可以连续或者倒叙
    adjoinVerfy(str) {
      let flag = false; // 默认不连贯
      for (let i = 0; i < str.length; i++) {
        // 如果是第一位 只判断和后一位的不判断前面的会报错
        if (i != 0) {
          if (typeof Number(str[i]) === "Number") {
            if (
              parseInt(str[i]) + 1 == parseInt(str[i - 1]) ||
              parseInt(str[i]) - 1 == parseInt(str[i - 1])
            ) {
              flag = true;
              break;
            }
          } else {
            if (
              str[i].charCodeAt() - str[i - 1].charCodeAt() == 1 ||
              str[i].charCodeAt() - str[i - 1].charCodeAt() == -1
            ) {
              flag = true;
              break;
            }
          }
        }
      }
      return flag;
    }
2. 校验
testPassWorld() {
      this.password = randomPassword(8, 16);
      console.log(this.password);
      let exp = /.*(?=.{8,16})(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[`~!@#$%^&*?\\(\\)\\-_=+\\[\\{\\}\\]|;:<.>,]).*$/;
      // 判断生成的随机密码中是否包含大小写字母和数字字母
      if (exp.test(this.password)) {
      // 判断有没有倒叙或者正序相连的数字或者字母
        let flag = this.adjoinVerfy(this.password);
        if (flag) {
          this.testPassWorld();
        }
      } else {
        this.testPassWorld();
      }
    },

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值