Javascript 如何使用以下条件验证密码?
密码应包含Javascript 如何使用以下条件验证密码?,javascript,Javascript,密码应包含 至少有一个大写字母 至少一个小写字母 至少一位数字 至少一个特殊符号 应大于4个字符 我已经尝试过-^(?=.*\d)(?=.[a-zA-Z])[a-zA-Z0-9!@$%&*{6,20}$您不需要一些大型的单一正则表达式,它可能会涉及像lookaheads这样的arcana,并且随着新条件的添加而难以维护。你所需要的只是 function validatePassword(pw) { return /[A-Z]/ .test(pw) &&
我已经尝试过-
^(?=.*\d)(?=.[a-zA-Z])[a-zA-Z0-9!@$%&*{6,20}$
您不需要一些大型的单一正则表达式,它可能会涉及像lookaheads这样的arcana,并且随着新条件的添加而难以维护。你所需要的只是
function validatePassword(pw) {
return /[A-Z]/ .test(pw) &&
/[a-z]/ .test(pw) &&
/[0-9]/ .test(pw) &&
/[^A-Za-z0-9]/.test(pw) &&
pw.length > 4;
}
您不需要一些大型的单一正则表达式,因为它可能会涉及像lookaheads这样的arcana,并且随着新条件的添加而很难维护。你所需要的只是
function validatePassword(pw) {
return /[A-Z]/ .test(pw) &&
/[a-z]/ .test(pw) &&
/[0-9]/ .test(pw) &&
/[^A-Za-z0-9]/.test(pw) &&
pw.length > 4;
}
您可以将上面的正则表达式与lookahead一起使用,如果在中需要,您可以轻松地附加任何其他条件
将来你基本上是在检查你的每一个标准是否由lookaheads提供
if(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*(\W|_)).{5,}$/.test(pwd)){
// valid password
}
您可以将上面的正则表达式与lookahead一起使用,如果在中需要,您可以轻松地附加任何其他条件
将来你基本上是在检查你的每一个标准是否由lookaheads提供
if(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*(\W|_)).{5,}$/.test(pwd)){
// valid password
}
您可以检查不使用正则表达式分隔的每个条件。其思想是检查每个条件(小写、大写、长度、数字)并更改开关 HTML
键入密码
Javascript
checkbt = document.getElementById("check");
passtxt = document.getElementById("password");
respuesta = document.getElementById("respuesta");
check = function(){
texto = passtxt.value.trim();
uppercase = false;
lowercase = false;
number = false;
lenght = false;
//uppercase letter
for (i=0; i< texto.length; i++){
if (texto[i] == texto[i].toUpperCase()){
uppercase = true;
break;
} else {
uppercase = false;
}
}
//lowercase
for (i=0; i< texto.length; i++){
if (texto[i] == texto[i].toLowerCase()){
lowercase = true;
break;
} else {
lowercase = false;
}
}
//number
for (i=0; i< texto.length; i++){
if (!isNaN(texto[i])){
number = true;
break;
} else {
number = false;
}
}
if (texto.length < 6){
lenght = false;
} else {
lenght = true;
}
if (lowercase && uppercase && number && lenght){
respuesta.innerHTML = "Password is good";
} else {
respuesta.innerHTML = "Password is bad <br />" +
"lowercase: " + boolstr(lowercase) + "<br />"+
"uppercase: " + boolstr(uppercase) + "<br />"+
"number: " + boolstr(number) + "<br />"+
"lenght: " + boolstr(lenght) + "<br />";
}
}
function boolstr(val){
if (val == true)
return "true";
else
return "false";
}
checkbt=document.getElementById(“检查”);
passtxt=document.getElementById(“密码”);
respuesta=document.getElementById(“respuesta”);
检查=函数(){
texto=passtxt.value.trim();
大写=假;
小写=false;
数字=假;
长度=假;
//大写字母
对于(i=0;i”+
小写:“+boolstr(小写)+”
”+
大写:“+boolstr(大写)+”
”+
“编号:”+boolstr(编号)+“
”+
“长度:”+boolstr(长度)+“
”;
}
}
函数boolstr(val){
如果(val==true)
返回“真”;
其他的
返回“false”;
}
您可以检查不使用正则表达式分隔的每个条件。其思想是检查每个条件(小写、大写、长度、数字)并更改开关
HTML
键入密码
Javascript
checkbt = document.getElementById("check");
passtxt = document.getElementById("password");
respuesta = document.getElementById("respuesta");
check = function(){
texto = passtxt.value.trim();
uppercase = false;
lowercase = false;
number = false;
lenght = false;
//uppercase letter
for (i=0; i< texto.length; i++){
if (texto[i] == texto[i].toUpperCase()){
uppercase = true;
break;
} else {
uppercase = false;
}
}
//lowercase
for (i=0; i< texto.length; i++){
if (texto[i] == texto[i].toLowerCase()){
lowercase = true;
break;
} else {
lowercase = false;
}
}
//number
for (i=0; i< texto.length; i++){
if (!isNaN(texto[i])){
number = true;
break;
} else {
number = false;
}
}
if (texto.length < 6){
lenght = false;
} else {
lenght = true;
}
if (lowercase && uppercase && number && lenght){
respuesta.innerHTML = "Password is good";
} else {
respuesta.innerHTML = "Password is bad <br />" +
"lowercase: " + boolstr(lowercase) + "<br />"+
"uppercase: " + boolstr(uppercase) + "<br />"+
"number: " + boolstr(number) + "<br />"+
"lenght: " + boolstr(lenght) + "<br />";
}
}
function boolstr(val){
if (val == true)
return "true";
else
return "false";
}
checkbt=document.getElementById(“检查”);
passtxt=document.getElementById(“密码”);
respuesta=document.getElementById(“respuesta”);
检查=函数(){
texto=passtxt.value.trim();
大写=假;
小写=false;
数字=假;
长度=假;
//大写字母
对于(i=0;i”+
小写:“+boolstr(小写)+”
”+
大写:“+boolstr(大写)+”
”+
“编号:”+boolstr(编号)+“
”+
“长度:”+boolstr(长度)+“
”;
}
}
函数boolstr(val){
如果(val==true)
返回“真”;
其他的
返回“false”;
}
下面的正则表达式应该适合您
var pattern = /^(?=.{5,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[\W])/
HTML代码
<input type="text" id="pass" />
<input type="button" id="btnpass" value="Test" />
var pattern = /^(?=.{5,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[\W])/
$("#btnpass").click(function(){
var checkval = pattern.test($("#pass").val());
if(!checkval) {
alert("Invalid password");
}
});
下面的正则表达式应该适合您
var pattern = /^(?=.{5,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[\W])/
HTML代码
<input type="text" id="pass" />
<input type="button" id="btnpass" value="Test" />
var pattern = /^(?=.{5,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[\W])/
$("#btnpass").click(function(){
var checkval = pattern.test($("#pass").val());
if(!checkval) {
alert("Invalid password");
}
});
这是@user663031给出的伟大答案的增强版
var错误={
大写:{regex:/[A-Z]/,说明:'至少一个大写字母'},
小写:{regex:/[a-z]/,说明:'至少一个小写字母'},
数字:{regex:/[0-9]/,说明:'至少一个数字'},
特殊:{regex:/[^A-Za-z0-9]/,说明:'至少一个特殊符号'},
长度:{test:e=>e.length>2,说明:'应该超过2个字符',
};
函数validatePassword(e){
return Object.entries(errors).flatMap([name,{test,regex,description}])=>{
常量isValid=测试?测试(e):正则表达式测试(e);
返回值是否有效?[]:{description,name};
});
}
console.log(JSON.stringify(validatePassword('a'),null,2))
这是@user663031给出的伟大答案的增强版
var错误={
大写:{regex:/[A-Z]/,说明:'至少一个大写字母'},
小写:{regex:/[a-z]/,说明:'至少一个