JavaScript 使用正则表达式验证密码的程序
在本文中,我们将看到JavaScript程序来检查和验证一个强密码或弱密码,根据自定义的范围。为了完成这个任务,我们将使用JavaScript正则表达式。
正则表达式是一系列形成搜索模式的字符序列。搜索模式可以用于文本搜索和文本替换操作。正则表达式可以是一个单一字符或一个更复杂的模式。
一个强密码必须是最小长度8个字符到用户需要的最大范围(本篇文章设置最大限制为15个字符)。它必须包含以下内容:
- 至少一个小写字母即[a-z]
- 至少一个大写字母即[A-Z]
- 至少一个数字即[0-9]
- 至少一个特殊字符即
['@','$','.','#','!','%','*','?','&','^']
- 同时,总长度必须在[8-15]的范围内
语法
字符串密码所需的正则表达式为:
let regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@.#!%*?&^])[A-Za-z\d@.#!%*?&]{8,15}$/;
使用正则表达式验证密码的方法
- 简单的布尔输出
- 根据密码强度多个结果
简单的布尔输出
示例: 在这个示例中,我们将仅验证给定的密码是否强壮,并输出true或false。
Javascript
let regex =
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@.#!%*?&])[A-Za-z\d@.#!%*?&]{8,15}$/;
let pass1 = "Geeks@123";
let pass2 = "GeeksforGeeks";
let pass3 = "Geeks123";
console.log(pass1, regex.test(pass1));
console.log(pass2, regex.test(pass2));
console.log(pass3, regex.test(pass3));
输出
Geeks@123 true
GeeksforGeeks false
Geeks123 false
基于密码强度的多个输出
在这种方法中,我们将根据数字、字母、特殊符号等的组合数量来设置密码的强度。
示例: 该示例将根据密码的强度验证密码。
Javascript
const strength = {
1: "very Weak",
2: "Weak",
3: "Meduim",
4: "Strong",
};
function checkStrength(pass) {
if (pass.length > 15)
return console.log(
pass + " Password is too lengthy"
);
else if (pass.length < 8)
return console.log(
pass + " Password is too short"
);
let regex =
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@.#!%*?&])[A-Za-z\d@.#!^%*?&]{8,15}/;
if (regex.test(pass)) {
return console.log(pass
+ " Password is strong");
}
let count = 0;
let regex1 = /[a-z]/;
if (regex1.test(pass)) count++;
let regex2 = /[A-Z]/;
if (regex2.test(pass)) count++;
let regex3 = /[\d]/;
if (regex3.test(pass)) count++;
let regex4 = /[!@#%^&*.?]/;
if (regex4.test(pass)) count++;
console.log(pass, "Pasword is " + strength[count]);
}
let passwords = [
"u4thdkslfheogica",
"G!2ks",
"GeeksforGeeks",
"Geeks123",
"GEEKS123",
"Geeks@123#",
];
passwords.map((e) => checkStrength(e));
输出
u4thdkslfheogica Password is too lengthy
G!2ks Password is too short
GeeksforGeeks Pasword is Weak
Geeks123 Pasword is Meduim
GEEKS123 Pasword is Weak
Geeks@123# Password is strong