如何创建一个验证密码的函数,如果满足所有要求则为 return 1,如果不满足则为 0?

How do I make a function that validates a password and return 1 if it fulfills all requirements and 0 if it doesn't?

我想在 JS 中创建一个验证密码的函数。密码最少8个,最多32个字符,至少一个大写字母,一个小写字母和一个数字。此外,它应该 return 满足所有要求时为 1,不满足时为 0。
我的程序 return 是一个布尔值,但即使它为真,它也保持 returning 0。我该怎么办?

var validatePassword = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])([0-9a-zA-Z]{8,32})$/

console.log(validatePassword.test("Password10"))

if (validatePassword == true) {
    console.log("1")
}
  
else {
    console.log("0")
}

const pattern = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])([0-9a-zA-Z]{8,32})$/

function validate(password){
  return pattern.test(password) ? 1 : 0;
}

console.log(validate("Password10"))

您正在验证编译后的正则表达式变量是否存在。

这个有效:

var passRegex = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])([0-9a-zA-Z]{8,32})$/

function isPasswordValid(p) {
  return passRegex.test(p) ? 1 : 0;
}

console.log(isPasswordValid("Password10"));
console.log(isPasswordValid("Pass0"));

您忘记将 test 方法的结果保存到变量中,而将其放入 if 中。这就是为什么即使它是 true 它也不会进入 if 语句。先将它保存到变量中,然后比较 in if 这样

var validatePassword = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])([0-9a-zA-Z]{8,32})$/

let result = validatePassword.test("Password10")
console.log(result)

if (result == true) {
    console.log("1")
} else {
    console.log("0")
}