【发布时间】:2022-11-14 15:32:33
【问题描述】:
在 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屏幕上的消息。
那么这有什么问题呢?
如何解决此问题并正确检查字符串是否包含书写符号?
【问题讨论】:
-
问题在于 ^ ,它检查字符串是否以开头,而 $ for 以结尾
标签: javascript regex