I have written a regular expression which could potentially be used for password strength validation:
^(?:([A-Z])*([a-z])*(\\d)*(\\W)*){8,12}$
Try it ==>
var PasswordStrength = function () {
var p_worker = {
checkMark: function ( msg, mark ) {
let strength = "Required!!!", status = true;
switch ( mark ) {
case 1: strength = ' Password strength: Weak...'; break;
case 2: strength = ' Password strength: Semi-weak...'; break;
case 3: strength = ' Password strength: Medium...'; break;
case 4: strength = ' Password strength: Strong...'; break;
default: status = false; break;
}
return { status: status/*[is valid or not]*/, cur_strength: strength/**[strength msg]*/, req_msg: msg/**[required msg]*/, mark: mark/**[strength mark]*/ };
},
setting: {
n: { rgx: /[0-9]/, msg: '1 Numeric character' },
c: { rgx: /[A-Z]/, msg: '1 Alphabet character' },
s: { rgx: /[a-z]/, msg: '1 Small character' },
sp: { rgx: /[@#$\.%^&+=]/, msg: '1 Special character' },
}
};
return {
check: function ( value ) {
let msg = "", mark = 0, c = 0;
for ( let i in p_worker.setting ) {
if ( !p_worker.setting[i]['rgx'].test( value ) ) {
if ( c === 3 ) {
msg += '[*] ' + p_worker.setting[i]['msg'] + ' ';
c++; continue;
}
msg += '[*] ' + p_worker.setting[i]['msg'] + ', ';
c++; continue;
}
if ( c === 3 ) {
msg += '
' + p_worker.setting[i]['msg'] + ' ';
mark++; c++; continue;
}
msg += '
' + p_worker.setting[i]['msg'] + ', ';
mark++; c++;
}
return p_worker.checkMark( msg, mark );
}
}
}();
Use ==>
PasswordStrength.check( "1234$#" );