题解 | #密码强度等级#

密码强度等级

https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    while ((line = await readline())) {
        console.log(getResult(line))
    }
})();

function getResult(data) {
  let score = 0;
  let isHasUpperLower = false;
  let isHasUpperOrLower = false;
  let isHasNumber = false;
  let isHasChar = false;

  if (data.length <= 4) {
    score += 5
  } else if (data.length >= 5 && data.length <= 7) {
    score += 10
  } else if (data.length >= 8) {
    score += 25
  }

  let str1 = data.replace(new RegExp(/[a-zA-Z]/g), "*");
  let str2 = data.replace(new RegExp(/[a-z]/g), "*");
  let str3 = data.replace(new RegExp(/[A-Z]/g), "*");

  if (str1 == str2 || str1 == str3) {
    isHasUpperOrLower = true
    score += 10
  } else if (str1 != str2 && str1 != str3) {
    isHasUpperLower = true;
    score += 20
  }

  let str4 = data.replace(/[0-9]/g, " ");

  let numberNum = str4.split(" ").length - 1
  if (numberNum == 1) {
    isHasNumber = true
    score += 10

  }
  if (numberNum > 1) {
    isHasNumber = true
    score += 20
  }

  let str5 = data.replace(/[^0-9a-zA-z]/g, "*")
  let charNum = str5.split("*").length - 1
  if (charNum == 1) {
    isHasChar = true
    score += 10
  }
  if (charNum > 1) {
    isHasChar = true
    score += 25
  }

  if (isHasUpperLower) {
    if (isHasNumber && isHasChar) {
      score += 5
    }
  } else {
    if (isHasUpperOrLower) {
      if (isHasChar && isHasNumber) {
        score += 3
      } else if (isHasNumber) {
        score += 2
      }
    }
  }
  if (score >= 90) {
    return "VERY_SECURE";
  } else if (score >= 80) {
    return "SECURE";
  } else if (score >= 70) {
    return "VERY_STRONG";
  } else if (score >= 60) {
    return "STRONG";
  } else if (score >= 50) {
    return "AVERAGE";
  } else if (score >= 25) {
    return "WEAK";
  } else {
    return "VERY_WEAK";
  }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务