javascript - 如何在 Javascript 中创建密码验证功能?
问题描述
我正在尝试创建一个验证密码强度的函数。我在网上看到了一些其他语言的例子,但不是 javascript。
- 密码不能为空
- 8 个字符
- 1个大写字母
- 1个小写字母
- 1 个号码
我注意到有些人使用正则表达式,但还有其他方法吗?我已经尝试了下面的方法,它让我可以验证大写字母但不验证小写或数字。
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"))
另外,我怎样才能检查它是否有数字?
解决方案
这是一个简单的验证
用正则表达式
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"))
推荐阅读
- ajax - 带有 Mapbox 的本地 GeoJSON 文件
- r - 编辑 DataTable 但当我们移动到另一个页面时更改消失
- tensorflow - Keras Scratch Graph 错误 - 为什么会发生此错误?
- firebase - 谷歌表格文档的状态变化可以触发云功能吗?
- c++ - 如何在 Opengl 中可视化聚光灯?
- python - 在带有标题的python中将文本解析为csv-F5 LTM
- animation - 转换框的问题:填充框和火狐
- symfony4 - 如何将 Date JsonObject 转换为字符串?
- bash - 传递用逗号分隔的bash数组
- networking - 如何找到较低层使用的协议?