regex 检查密码是否也包含符号不起作用

mbzjlibv  于 2022-11-18  发布在  其他
关注(0)|答案(2)|浏览(109)

在Javascript中,我尝试添加一个类似这样的函数,用于检查输入的密码是否包含任何符号(特殊)字符,如!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?
所以我这样做:

function checkpasswordlength(){
            var format1 = /^[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]*$/;
            var e = document.getElementById("password").value;
            if(e != "") {
                if(e.length >= 12){
                    if(e.match(format1)){
                        document.getElementById("passwordstrengthstatus").style.display = "inline";
                        document.getElementById("passwordstrengthstatus").innerHTML = "strong";
                        document.getElementById("passwordstrengthstatus").style.setProperty('background-color', '#3cb878', 'important');
                    }else{
                        document.getElementById("passwordstrengthstatus").style.display = "inline";
                        document.getElementById("passwordstrengthstatus").innerHTML = "normal";
                        document.getElementById("passwordstrengthstatus").style.setProperty('background-color', '#3cb878', 'important');
                    }
                }else{
                    document.getElementById("passwordstrengthstatus").style.display = "inline";
                    document.getElementById("passwordstrengthstatus").innerHTML = "weak";
                    document.getElementById("passwordstrengthstatus").style.setProperty('background-color', 'red', 'important');
                }
            }else{
                document.getElementById("passwordstrengthstatus").style.display = "none";
            }
        }

正如您所看到的,它将检查密码是否为空,以及其长度是否超过12个字符,然后继续检查e.match(format1)
但问题是,当我输入这些字符时,它不会将此条件返回为真,因此消息**strong不会出现,屏幕上仍显示normal**消息。
这有什么问题吗?
如何解决这个问题并正确检查字符串是否包含书写符号?

dced5bon

dced5bon1#

如果您只想检查是否存在至少一个符号字符,则删除^$锚点,然后用途:

var format1 = /[!@#$%^&*()_+\=\[\]{};':"\\|,.<>\/?-]/;

请注意,连字符已被移到字符类的末尾。如果您想保持原始模式并匹配整个密码,请修改为:

var format1 = /^.*[!@#$%^&*()_+\=\[\]{};':"\\|,.<>\/?-].*$/;
afdcj2ne

afdcj2ne2#

您当前的正则表达式仅在密码只包含特殊字符时匹配。请尝试在其中添加a-zA-Z 0 -9
^[a-zA-Z0-9!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]*$

相关问题