我正在这样做problem on hacker earth ,(可以忽略问题)
基本上在下面的代码片段中
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
}
第一个条件仅适用于 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');
关于javascript - 创建强密码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58044603/