Password Validation With Sequential Letters And Numbers - RegEx
To have customer accounts more secure, a well crafted password is good practice. This is my Regular Expression string for password validation. /^(?=.*[0-9])(?!.*?\d{3})(?=.*[a-zA-
Solution 1:
You can have a function similar to the below by looping the characters and using a charCodeAt
string method as below.
Note: This is for the question raised in below link as well.
string validation for 3 or more consecutive sequential alphanumeric characters in javascript
function validate() {
var pwd = document.getElementById('password').value;
var isValid = checkPassword(pwd);
var elm = document.getElementById('result');
elm.innerHTML = isValid ? 'Valid' : 'Invalid';
elm.style.color = isValid ? 'green' : 'red';
}
function checkPassword(s) {
if(s) {
var test = (x) => !isNaN(x);
var check = (x, y, i) => x + i === y;
for(var i = 0; i < s.length - 2; i++) {
if(test(s[i])) {
if(test(s[i + 1]) && test(s[i + 2])) {
if(check(Number(s[i]),Number(s[i + 1]), 1) &&
check(Number(s[i]), Number(s[i + 2]), 2)) {
return false;
}
}
} else if(!test(s[i + 1]) && !test(s[i + 2])) {
if(check(s.charCodeAt(i), s.charCodeAt(i + 1), 1) &&
check(s.charCodeAt(i), s.charCodeAt(i + 2), 2)) {
return false;
}
}
}
}
return true;
}
document.getElementById('buttonToValidate').click();
<input type="text" id="password" value="efg123!$" />
<input type="button" id="buttonToValidate" value="Check" onclick="validate()" />
<span id="result" />
Solution 2:
To add the descending check based on the answer above;
function test(s) {
// Check for sequential numerical characters
for(var i in s){
if (+s[+i+1] == +s[i]+1 ) return false;
if (+s[+i+1]+1 == +s[i] ) return false;
}
// Check for sequential alphabetical characters
for(var i in s){
if (String.fromCharCode(s.charCodeAt(i)+1) == s[+i+1]) return false;
if (String.fromCharCode(s.charCodeAt(i)-1) == s[+i+1]) return false;
}
return true;
}
// For demo purposes only
var tests = [
'efg123!$',
'abcd567%',
'xyz789^&',
'#hijk23456',
'ryiiu562@',
'erty745#',
'gjnfl45566^',
'2a3b5c6',
'mortz',
'1357911'
], sep = '\t\u2192 ', out = ['Fail','Pass'], eol = '<br>';
document.write('<pre>');
for(var i in tests) document.write(tests[i] + sep + out[+test(tests[i])] + eol);
document.write('</pre>');
Post a Comment for "Password Validation With Sequential Letters And Numbers - RegEx"