在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
**消息。
这有什么问题吗?
如何解决这个问题并正确检查字符串是否包含书写符号?
2条答案
按热度按时间dced5bon1#
如果您只想检查是否存在至少一个符号字符,则删除
^
和$
锚点,然后用途:请注意,连字符已被移到字符类的末尾。如果您想保持原始模式并匹配整个密码,请修改为:
afdcj2ne2#
您当前的正则表达式仅在密码只包含特殊字符时匹配。请尝试在其中添加a-zA-Z 0 -9
^[a-zA-Z0-9!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]*$