【问题标题】:How do I make a function that validates a password and return 1 if it fulfills all requirements and 0 if it doesn't? [duplicate]如何创建一个验证密码的函数,如果满足所有要求则返回 1,如果不满足则返回 0? [复制]
【发布时间】:2020-11-08 10:04:25
【问题描述】:
我想在 JS 中创建一个验证密码的函数。密码必须至少有 8 个字符,最多 32 个字符,至少一个大写字母、一个小写字母和一个数字。此外,它应该在满足所有要求时返回 1,在不满足时返回 0。
我的程序返回一个布尔值,但即使它为真,它也一直返回 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")
}
【问题讨论】:
标签:
javascript
regex
if-statement
boolean
passwords
【解决方案1】:
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"))
【解决方案2】:
您正在验证已编译的正则表达式变量是否存在。
这行得通:
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"));
【解决方案3】:
您忘记将test 方法的结果保存到变量中,然后将其放入 if。这就是为什么即使它是 true 它也永远不会进入 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")
}