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 是假的?在这一行中,我虽然设置为 true?
if (character.match(/[^a-zA-Z]/) && (character === character.toLowerCase()) && !mapStrength.lowerCase) mapStrength.lowerCase = true
解决方案
通过您的测试:
if (character.match(/[^a-zA-Z]/) && (character === character.toLowerCase()) && !mapStrength.lowerCase) {
mapStrength.lowerCase = true
}
第一个条件仅适用于 if character.match(/[^a-zA-Z]/)
- 换句话说,如果不是character
按字母顺序排列的。匹配任何不是字符集中以下字符之一的字符。改为使用(与 相同,只是重复性较低):[^
/[a-z]/i
[a-zA-Z]
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
:
if (character.match(/[a-z]/)) {
mapStrength.lowerCase = true;
}
if (character.match(/[A-Z]/)) {
mapStrength.upperCase = true;
}
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');
推荐阅读
- android - SQLite 插入返回 -1 。删除包含数据库的文件夹后
- vue.js - iview 抽屉(transfer=false, inner=true) 在 IE10 中显示在外部而不是内部的标签中
- php - Prestashop 1.7 如果产品类别之一,而不是 category_default
- android - 新版本的应用程序出现 Phonegap 格式错误的 config.xml 文件和 Google Play 控制台错误
- python - ImportError:无法从“Crypto.PublicKey”导入名称“RSA”
- java - 仅使用 @mappedBy ,不使用@JoinColumn - 在 OneToMany 关系中创建的连接列,那么 JoinColumn 的用途是什么?
- python-3.x - 在 Windows 中导入 tensorflow 模块时遇到问题
- python - 根据条件将 df 中的列除以另一个 df 值
- python - 在python中解析html的问题
- iframe - 即使父 url 是用 https 加载的,iframe 也会将相对 url 加载为 http