密码验证,无需多次if-else

时间:2019-04-12 09:39:30

标签: javascript

我有以下用于密码验证的代码来测试不同的情况并添加有效和无效的类以显示HTML文件中的正确性。但是我有很多if-else块来验证所有条件。我尝试用switch语句实现,但没有运气。关于如何在许多if-else条件下实现此目标的任何线索。谢谢!

var pwdCheck = (str) => {
  var upper = /[A-Z]/g,
    numbers = /[0-9]/g,
    lower = /[a-z]/g;
  if (str.match(upper)) {
    uppercase.classList.remove("invalid");
    uppercase.classList.add("valid");
  } else {
    uppercase.classList.remove("valid");
    uppercase.classList.add("invalid");
  }
  // Numbers //
  if (str.match(numbers)) {
    numeric.classList.remove("invalid");
    numeric.classList.add("valid");
  } else {
    numeric.classList.remove("valid");
    numeric.classList.add("invalid");
  }
}

2 个答案:

答案 0 :(得分:2)

为什么不能使用&& operator来组合两个不同的条件,以最小化if .. else阶梯到else if的阶梯

var pwdCheck = (str) => {
  var upper = /[A-Z]/g,
    numbers = /[0-9]/g,
    lower = /[a-z]/g;

  //Here you can use multiple conditions to check your password. I used && to combine two conditions
  if (str.match(upper) && str.match(numbers)) {
    uppercase.classList.remove("invalid");
    uppercase.classList.add("valid");
  } else {
    uppercase.classList.remove("valid");
    uppercase.classList.add("invalid");
  }
}

答案 1 :(得分:1)

您可以使用三元运算符str.match(upper) ? true : false,这样可以减少代码并提高可读性,并将let removeClass = uppercase.classList.remove("invalid");存储为局部变量