我正在尝试创建一个测试来检查密码的安全级别。问题是当已使用的正则表达式存储在数组“comprobaciones”中时,有时一个正则表达式会保存不止一次,所以当我检查数组“comprobaciones”的长度时,我可能会输出 1, 2 , 4、8 和 16。如何解决数组“comprobaciones”的长度与输出 1、2、3、4 和 5 类似的问题?我究竟做错了什么?帮助,谢谢。
是否有可能在任何 DEMO中出现问题
JAVASCRIPT
var compMay = /[A-ZÑ]/;
var compMin = /[a-zñ]/;
var compNum = /(?=.*\d)/;
var compCarEsp = /[!@#$%^&*(){}[\]<>+¿¡?/|.:;_-]/;
var compLong = /^.{8,}$/;
var seguridadPass = [];
seguridadPass.push(compMin,compMay,compNum,compCarEsp,compLong);
function pintaValidar(numComp){
if(numComp==1){
$('#porcentaje').removeClass();
$('#porcentaje').addClass('segurRojo');
$('#porcentaje').css('width', '20%');
}
if(numComp==2){
$('#porcentaje').removeClass();
$('#porcentaje').addClass('segurRojo');
$('#porcentaje').css('width', '40%');
}
if(numComp==4){
$('#porcentaje').removeClass();
$('#porcentaje').addClass('segurVerde');
$('#porcentaje').css('width', '60%');
}
if(numComp==8){
$('#porcentaje').removeClass();
$('#porcentaje').addClass('segurVerde');
$('#porcentaje').css('width', '80%');
}
if(numComp==16){
$('#porcentaje').removeClass();
$('#porcentaje').addClass('segurVerde');
$('#porcentaje').css('width', '100%');
}
comprobaciones = [];
}
$(document).ready(function(){
comprobaciones = []
$('#psd').keyup(function(e){
var pass = $(this).val();
if(pass!=''){
for(i=0;i<seguridadPass.length;i++){
if(seguridadPass[i].test(pass)){
//alert(seguridadPass[i]);
if(comprobaciones.length==0){
comprobaciones.push(seguridadPass[i]);
}
else{
for(j=0;j<comprobaciones.length;j++){
if(comprobaciones[j]!=seguridadPass[i]){
comprobaciones.push(seguridadPass[i]);
}
}
}
}
}
var numComp = comprobaciones.length
pintaValidar(numComp);
}
else{
$('#porcentaje').removeClass();
$('#puntos').html('');
comprobaciones.splice(0,comprobaciones.length);
}
});
});