Skip to content

Instantly share code, notes, and snippets.

@nraloux
Created May 9, 2020 12:54
Show Gist options
  • Save nraloux/c86df6109897650780bf556d15888f18 to your computer and use it in GitHub Desktop.
Save nraloux/c86df6109897650780bf556d15888f18 to your computer and use it in GitHub Desktop.
Simple Password Validator
<div>
<input id="passInput" type="password" placeholder="Enter password">
<p>
Password should contain at least
<span id="length" class="invalid">8 characters</span>,
<span id="capital" class="invalid">1 upper case letter</span>,
<span id="letter" class="invalid">1 lower case letter</span>,
<span id="number" class="invalid">1 number</span>, and
<span id="character" class="invalid">1 special character</span>
</p>
</div>
document.addEventListener("DOMContentLoaded", function(event) {
var passInput = document.getElementById("passInput");
var letter = document.getElementById("letter");
var capital = document.getElementById("capital");
var number = document.getElementById("number");
var length = document.getElementById("length");
var character = document.getElementById("character");
var lowerCaseLetters = /[a-z]+/;
var upperCaseLetters = /[A-Z]+/;
var numbers = /[0-9]+/;
var characters = /[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]+/;
var remClass, addClass;
valid = (req, state) => {
remClass = state ? "invalid" : "valid";
addClass = state ? "valid" : "invalid";
req.classList.remove(remClass);
req.classList.add(addClass);
}
passInput.onkeyup = () => {
// Validate lowercase letters
lowerCaseLetters.test(passInput.value) ? valid(letter, true) : valid(letter, false);
// Validate capital letters
upperCaseLetters.test(passInput.value) ? valid(capital, true) : valid(capital, false);
// Validate numbers
numbers.test(passInput.value) ? valid(number, true) : valid(number, false);
// Validate characters
characters.test(passInput.value) ? valid(character, true) : valid(character, false);
// Validate length
passInput.value.length >= 8 ? valid(length, true) : valid(length, false);
}
})
.valid { color: #D8DD22 !important; }
.invalid { color: #D91171 !important; }
/* Extra Styling */
body {
background: #0C2D57;
}
div {
width: 400px;
margin: 80px auto;
background: #061733;
padding: 60px 40px 60px 60px;
border-radius: 15px;
box-shadow: 0 3px 15px rgba(0, 0, 0, .1);
}
div input {
width: 340px;
padding: 17px;
border-radius: 5px;
border: none;
box-shadow: 0 3px 15px rgba(0, 0, 0, .1);
margin: 0 auto;
}
div p {
font-family: 'Helvetica', 'Segoe UI Light', sans-serif;
font-size: 14px;
color: #fff;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment