为什么我的JavaScript代码没有按预期运行?

为什么我的JavaScript代码没有按预期运行?,javascript,regex,if-statement,Javascript,Regex,If Statement,与我编写的一些JavaScript相关的两个查询没有按我认为应该的方式执行。这是一个密码验证表单,有两个输入字段,允许用户写入密码,然后重新输入,以查看是否存在匹配项 下面是函数 function passwordValidation(){ var uname = document.getElementById("pword1").value; var pword = document.getElementById("cPassword").value; var ma

与我编写的一些JavaScript相关的两个查询没有按我认为应该的方式执行。这是一个密码验证表单,有两个输入字段,允许用户写入密码,然后重新输入,以查看是否存在匹配项

下面是函数

function passwordValidation(){


    var uname = document.getElementById("pword1").value;
    var pword = document.getElementById("cPassword").value;
    var matchCol = "#009900";
    var noMatchCol = "#CC0000";
    var noBg = "#FFFFFF";
    var passReq = new RegExp ("^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[\\\+\=\"\.\[\]_£|`¬':;~{}<>()#?!@$%^&*-]).{8,20}$");



    if (uname.length < 1 || pword.length < 1){
        cPassword.style.backgroundColor = noBg;
        match = "";
    }

    if(passReq.test(pword1)){
        DIMR = "Does Meet Requirements";
    }else {
        DIMR = "Does Not Meet Requirements";
    }

    if (uname == pword){
        match = "Match!";
        cPassword.style.backgroundColor = matchCol;
    } else{
        match = "No Match!";
        cPassword.style.backgroundColor = noMatchCol;
    }
    document.getElementById("combination").innerHTML = match;
    document.getElementById("reqMeeting").innerHTML = DIMR;
}
函数密码验证(){
var uname=document.getElementById(“pword1”).value;
var pword=document.getElementById(“cPassword”).value;
var matchCol=“#009900”;
变量noMatchCol=“#CC0000”;
var noBg=“#FFFFFF”;
var passReq=new RegExp(“^(?=.[A-Z])(?=.[A-Z])(?=.[0-9])(?=.?[\\+\=\”\.\[\].\[\]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
如果(未指定长度<1 | | pword.length<1){
cPassword.style.backgroundColor=noBg;
match=“”;
}
if(密码请求测试(pword1)){
DIMR=“不符合要求”;
}否则{
DIMR=“不符合要求”;
}
如果(uname==pword){
match=“match!”;
cPassword.style.backgroundColor=matchCol;
}否则{
match=“不匹配!”;
cPassword.style.backgroundColor=noMatchCol;
}
document.getElementById(“组合”).innerHTML=match;
document.getElementById(“reqMeeting”).innerHTML=DIMR;
}
首先,为什么它会忽略第一个if语句?当我在浏览器中加载代码并运行它时。当我在第一个输入框中键入值时,第二个将变为红色。即使if语句清楚地说,如果输入a或输入b为空,请不要这样做


其次,
.test
部分工作不正常。也许我的代码是错误的,但对我来说,这意味着如果正则表达式
passReq
pword1
值匹配,那么要么打印出
“不满足要求”
。我还将其更改为变量名
passReq.test(uname)
但仍然没有发生任何事情。

这是因为这是一个单独的
if
条件。因此,无论结果如何,它都将继续到下一个条件。我想您必须使用
else
与第一个
if
条件一起使用,以获得您想要的预期结果

function passwordValidation() {
    var uname = document.getElementById("pword1").value;
    var pword = document.getElementById("cPassword").value;
    var matchCol = "#009900";
    var noMatchCol = "#CC0000";
    var noBg = "#FFFFFF";
    var passReq = new RegExp("^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[\\\+\=\"\.\[\]_£|`¬':;~{}<>()#?!@$%^&*-]).{8,20}$");
    if (uname.length < 1 || pword.length < 1) {
        cPassword.style.backgroundColor = noBg;
        match = "";
    } else {  // this should solve the problem
        if (passReq.test(pword)) {
            DIMR = "Does Meet Requirements";
        } else {
            DIMR = "Does Not Meet Requirements";
        }
        if (uname == pword) {
            match = "Match!";
            cPassword.style.backgroundColor = matchCol;
        } else {
            match = "No Match!";
            cPassword.style.backgroundColor = noMatchCol;
        }
        document.getElementById("combination").innerHTML = match;
        document.getElementById("reqMeeting").innerHTML = DIMR;
    }
}
函数密码验证(){
var uname=document.getElementById(“pword1”).value;
var pword=document.getElementById(“cPassword”).value;
var matchCol=“#009900”;
变量noMatchCol=“#CC0000”;
var noBg=“#FFFFFF”;
var passReq=new RegExp(“^(?=.[A-Z])(?=.[A-Z])(?=.[0-9])(?=.?[\\+\=\”\.\[\].\[\]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
如果(未指定长度<1 | | pword.length<1){
cPassword.style.backgroundColor=noBg;
match=“”;
}否则{//这应该可以解决问题
if(密码请求测试(pword)){
DIMR=“不符合要求”;
}否则{
DIMR=“不符合要求”;
}
如果(uname==pword){
match=“match!”;
cPassword.style.backgroundColor=matchCol;
}否则{
match=“不匹配!”;
cPassword.style.backgroundColor=noMatchCol;
}
document.getElementById(“组合”).innerHTML=match;
document.getElementById(“reqMeeting”).innerHTML=DIMR;
}
}

这种方法增加了圈复杂度。但不管怎样,结果是正确的。多么简单!谢谢你,伙计。关于为什么我的“不符合/不符合要求”信息不会显示的第二部分有什么想法吗?我希望它的显示方式与“匹配/不匹配”的显示方式相同。如果not@BlueShark“可能是会议不可见吧?”阿米特约基我不小心把它拿了出来。但是现在在我的html的顶部,它看起来是这样的:“

”即使我输入了一些有效的东西,我仍然会得到消息“不满足要求”而不是“确实满足要求”@BlueShark你能做一个JSFIDLE吗?