首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建强密码错误

创建强密码错误
EN

Stack Overflow用户
提问于 2019-09-21 22:31:25
回答 1查看 51关注 0票数 0

我在做这个黑客地球问题,(可以忽略这个问题)

基本上在下面的代码片段中

代码语言:javascript
复制
function minimumNumber(n, password) {
   const mapStrength = {
       numberProp: false,
       lowerCase: false, 
       upperCase: false,
       specialChar: false
   }
// Number of characters less than 6, add those many characters to reach 6 -> The buffer characters
    let charRequeiredToMakePasswordStrong = 0
    let bufferLength = (6-n) > 0 ? 6-n : 0 
    
    console.log(`This is buffer:`,  bufferLength)
    // Split password and itt
    password.split('').forEach(character => {
        // Checking if character is number
        if (Number.isInteger(character) && !mapStrength.numberProp) mapStrength.numberProp = true
        // Checking if character is
    
        if (character.match(/[^a-zA-Z]/) && (character === character.toLowerCase()) && !mapStrength.lowerCase) mapStrength.lowerCase = true
        if (character.match(/[^a-zA-Z]/) && (character === character.toUpperCase()) && !mapStrength.upperCase) mapStrength.upperCase = true
        if (character.toLowerCase() === character.toUpperCase()) mapStrength.specialChar = true 

    })
    console.log(mapStrength)

        // Calculating Number of false
    Object.values(mapStrength).forEach(charge => {
        if (!charge) charRequeiredToMakePasswordStrong += 1
    })

         console.log(charRequeiredToMakePasswordStrong, bufferLength)
      if (bufferLength > charRequeiredToMakePasswordStrong) return bufferLength
      if (charRequeiredToMakePasswordStrong > bufferLength) return charRequeiredToMakePasswordStrong
      return bufferLength

}

minimumNumber(3, 'zss');

为什么我的mapStrength.lowerCase是假的?在这句话里,我以为我是真的?

代码语言:javascript
复制
 if (character.match(/[^a-zA-Z]/) && (character === character.toLowerCase()) && !mapStrength.lowerCase) mapStrength.lowerCase = true
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-21 22:36:21

用你的测试:

代码语言:javascript
复制
if (character.match(/[^a-zA-Z]/) && (character === character.toLowerCase()) && !mapStrength.lowerCase) {
  mapStrength.lowerCase = true
}

第一个条件只适用于character.match(/[^a-zA-Z]/) -换句话说,如果character不是字母顺序的话。[^匹配字符集中不属于下列字符之一的任何字符。使用/[a-z]/i代替(这与[a-zA-Z]相同,只是较少重复):

代码语言:javascript
复制
function minimumNumber(n, password) {
   const mapStrength = {
       numberProp: false,
       lowerCase: false, 
       upperCase: false,
       specialChar: false
   }
// Number of characters less than 6, add those many characters to reach 6 -> The buffer characters
    let charRequeiredToMakePasswordStrong = 0
    let bufferLength = (6-n) > 0 ? 6-n : 0 
    
    console.log(`This is buffer:`,  bufferLength)
    // Split password and itt
    password.split('').forEach(character => {
        // Checking if character is number
        if (Number.isInteger(character) && !mapStrength.numberProp) mapStrength.numberProp = true
        // Checking if character is
    
        if (character.match(/[a-z]/i) && (character === character.toLowerCase()) && !mapStrength.lowerCase) mapStrength.lowerCase = true
        if (character.match(/[a-z]/i) && (character === character.toUpperCase()) && !mapStrength.upperCase) mapStrength.upperCase = true
        if (character.toLowerCase() === character.toUpperCase()) mapStrength.specialChar = true 

    })
    console.log(mapStrength)

        // Calculating Number of false
    Object.values(mapStrength).forEach(charge => {
        if (!charge) charRequeiredToMakePasswordStrong += 1
    })

         console.log(charRequeiredToMakePasswordStrong, bufferLength)
      if (bufferLength > charRequeiredToMakePasswordStrong) return bufferLength
      if (charRequeiredToMakePasswordStrong > bufferLength) return charRequeiredToMakePasswordStrong
      return bufferLength

}

minimumNumber(3, 'zss');
minimumNumber(3, 'zsS');

您可以通过使用分配给mapStrength.lowerCase的单个条件来提高代码的可读性,而不管如何:

代码语言:javascript
复制
if (character.match(/[a-z]/)) {
  mapStrength.lowerCase = true;
}
if (character.match(/[A-Z]/)) {
  mapStrength.upperCase = true;
}

代码语言:javascript
复制
function minimumNumber(n, password) {
   const mapStrength = {
       numberProp: false,
       lowerCase: false, 
       upperCase: false,
       specialChar: false
   }
// Number of characters less than 6, add those many characters to reach 6 -> The buffer characters
    let charRequeiredToMakePasswordStrong = 0
    let bufferLength = (6-n) > 0 ? 6-n : 0 
    
    console.log(`This is buffer:`,  bufferLength)
    // Split password and itt
    password.split('').forEach(character => {
        // Checking if character is number
        if (Number.isInteger(character) && !mapStrength.numberProp) mapStrength.numberProp = true
        // Checking if character is
        if (character.match(/[a-z]/)) {
          mapStrength.lowerCase = true;
        }
        if (character.match(/[A-Z]/)) {
          mapStrength.upperCase = true;
        }
        if (character.toLowerCase() === character.toUpperCase()) mapStrength.specialChar = true 

    })
    console.log(mapStrength)

        // Calculating Number of false
    Object.values(mapStrength).forEach(charge => {
        if (!charge) charRequeiredToMakePasswordStrong += 1
    })

         console.log(charRequeiredToMakePasswordStrong, bufferLength)
      if (bufferLength > charRequeiredToMakePasswordStrong) return bufferLength
      if (charRequeiredToMakePasswordStrong > bufferLength) return charRequeiredToMakePasswordStrong
      return bufferLength

}

minimumNumber(3, 'zss');
minimumNumber(3, 'zsS');

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58044603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档