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