首页 > 解决方案 > 如何在 Javascript 中创建密码验证功能?

问题描述

我正在尝试创建一个验证密码强度的函数。我在网上看到了一些其他语言的例子,但不是 javascript。

我注意到有些人使用正则表达式,但还有其他方法吗?我已经尝试了下面的方法,它让我可以验证大写字母但不验证小写或数字。

const passwordVerifier = (password) => {

let result = ''
let upperCase = ["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"]
let lowerCase = ["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"]

//The password should not be null
if(password !== null){
  //The password should be larger than 8 chars
  if(password.length >= 8 ){   
    //The password should have one uppercase/ lowercase letter
    for(let i = 0; i <= password.length; i++){
      if(upperCase.indexOf(password[i]) >= 1 && lowerCase.indexOf(password[i]) >= 1){
        result += 'Strong Password'
        return result
      }
        
    } result += 'Must have caps and lowcaps'
        return result
        
  } result += 'Must have 8 characters'
        return result
 }


 result += 'Password cannot be null'
 return result
 }


 console.log(passwordVerifier("Password123"))

另外,我怎样才能检查它是否有数字?

标签: javascript

解决方案


这是一个简单的验证

用正则表达式

const validatePassword=(password)=> {
  
  if (!password)
      return "Cant be empty";
  if (password.length<8)
      return "Can't be lower than 8 character in length";
  if (!/[A-Z]/g.test(password))
      return "At least one upper character is needed";
      
   if (!/[a-z]/g.test(password))
      return "At least one lower character is needed";
   
  if (!/[0-9]/g.test(password))
      return "At least one number is needed";
      
    return true;    

}

// false
console.log(validatePassword("tests01a")) 

// true
console.log(validatePassword("testS01a")) 

没有正则表达式

let upperCase = ["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"]
const validatePassword=(password)=> {
      if (!password)
          return "Cant be empty";
      if (password.length<8)
          return "Can't be lower than 8 character in length";
      if (!password.split("").find(x=> upperCase.find(a=> a == x)))
          return "At least one upper character is needed";
          
       if (!password.split("").find(x=> upperCase.find(a=> a.toLowerCase() == x)))
          return "At least one lower character is needed";
       
      if (!password.split("").find(x=> !isNaN(parseInt(x))))
          return "At least one number is needed";
          
        return true;    

    }

    // false
    console.log(validatePassword("tests01a")) 

    // true
    console.log(validatePassword("testS01a")) 


推荐阅读