333hhhh
//校验密码,校验成功返回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,校验失败返回falsefunction?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);}
如果单纯用正则的话,好难好难,我能力有限,实现不了,