javascript 密码要求至少八位,要求必须是数字和字母组成,不用正则!

//校验密码,校验成功返回true,校验失败返回false

function?checkPassword(password){

var?numberCount,//数字字符数目

letterCount,//字母字符数目

numberRegExp?=?/[0-9]/,//数字正则

letterRegExp?=?/[a-z]/i,//字母正则,不区分大小写

length?=?(password?=?password?||?'').length;

if(length?<?8){

return?false;

}

numberCount?=?letterCount?=?0;

for(var?i?=?0,?char;?i?<?length;?i++){

char?=?password.charAt(i);//取得每个字符

if(numberRegExp.test(char)){

numberCount?+=?1;//数字字符数目加1?

}else?if(letterRegExp.test(char)){

letterCount?+=?1;//字母字符数目加1?

}else{

return?false;//即不是字母又不数字,直接返回false

}

}

return?!(numberCount?==?length?||?letterCount?==?length);

}

另一优化版本,完全不用正则

//校验密码,校验成功返回true,校验失败返回false

function?checkPassword(password){

function?isNumber(charCode){

//48为字符'0'的unicode码,57为字符'9'的unicode码

return?charCode?>=?48?&&?charCode?<=?57

}

function?isLetter(charCode){

//65为字符'A'的unicode码,90为字符'Z'的unicode码

//90为字符'a'的unicode码,122为字符'z'的unicode码

return?(charCode?>=?65?&&?charCode?<=?90)?

||?(charCode?>=?97?&&?charCode?<=?122);

}

var?numberCount,//数字字符数目

letterCount,//字母字符数目

length?=?(password?=?password?||?'').length;

if(length?<?8){

return?false;

}

numberCount?=?letterCount?=?0;

for(var?i?=?0,?charCode;?i?<?length;?i++){

charCode=?password.charCodeAt(i);//取得每个字符

if(isNumber(charCode)){

numberCount?+=?1;//数字字符数目加1?

}else?if(isLetter(charCode)){

letterCount?+=?1;//字母字符数目加1?

}else{

return?false;//即不是字母又不数字,直接返回false

}

}

return?!(numberCount?==?length?||?letterCount?==?length);

}

如果单纯用正则的话,好难好难,我能力有限,实现不了,