【发布时间】:2020-05-16 08:53:11
【问题描述】:
谁能告诉我为什么这个功能不起作用?密码长度和号码检查工作完美。但是大写大写的check是有问题的……
function validera() {
var passw = document.getElementById("User-Password").value;
var upper = /[A-Z]/ ;
var number = /[0-9]/;
if (passw.length < 6 || !number.test(passw) || !upper.test(passw)) {
if (passw.length < 6) {
alert("Please make sure password is longer than 6 characters.")
return false;
}
var counter = 0;
var i;
for(i = 0; i < passw.length; i++){
passw.charAt(i)
if(upper.test(passw.charAt(i))){
counter++;
break;
}
}
if( counter < 2 ){
alert("Please make sure password includes 2 capital letters")
return false;
}
if (!number.test(passw)) {
alert("Please make sure Password Includes a Digit")
return false;
}
} else {
alert("Account created")
}
或者我必须使用正则表达式吗?
【问题讨论】:
-
您的
break语句会在您遇到第一个大写字母时立即中断循环。因此,您的计数器将始终为 1。 -
为什么在 1 次正则表达式测试时会循环?
if(!/[A-Z].*[A-Z]/.test(passw)){alert('Cap me twice!');return false;} -
还是不行? if(!/[A-Z].*[A-Z]/.test(passw)) {alert('Cap me two!') ;return false;} 就这样吗?我以前从未使用过正则表达式
-
我仍然可以写“test1A”
标签: javascript validation passwords