js 生成任意长度复杂字符串(包含数字、大小写字母和特殊字符)

JavaScript4年前 (2020)更新 小马大哥哥
551 0 0

js实现随机生成复杂字符串,要求必须大于等于6位字符,必须包含大小写字母、数字和特殊字符。网上找了一下有人分享,稍微修改了以下,满足自己当前项目的需求,实现代码如下:

    /**
     * 产生指定长度随机字母数字特殊字符组合(此方法因为生产的字符串中必须包含 
     * 大小写字母、数字和特殊字符,所以最短长度都是4)
     * @param {number} strLength  指定生成字符串的长度
     * @returns {string}
     */
    var randomWord = function(strLength) {
      var str = "",
          pos = 0,
          range = strLength,
          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',
          '-','.','~','!','@','#','$','%','^','&','*','(',')','_',':','<','>','?'],
        numArr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
        capital = ['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'],
        minuscule = ['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'],
        spechars = ['-','.','~','!','@','#','$','%','^','&','*','(',')','_',':','<','>','?'];
      // 因为要求生产的字符串中必须包含大小写字母、数字和特殊字符,所有把定义 
      // 好的存储大小写字母、数字和特殊字符的数组放到一个数组中,遍历取值
      var arrName = [numArr, capital, minuscule, spechars, arr, arr];
      if(strLength > 6) {
        for(let i = 0; i < (strLength - 6); i++) {
          arrName.push(arr);
        }
      }
      for (let i = 0; i < range; i++) {
        pos = Math.round(Math.random() * (arrName[i].length - 1));
        str += arrName[i][pos];
      }
      return str;
    }

console.log(randomWord(6))     // 4nZ<Vf

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...