I am trying to write a regular expression to validate a password which must meet the following criteria:
I tried the following but it doesn't seem to work.
http://jsfiddle.net/many_tentacles/Hzuc9/
<input type='button' value='click' class='buttonClick' /> <input type='text' /> <div></div>
and...
$(".buttonClick").click(function () { if ($("input[type=text]").filter(function () { return this.value.match(/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])([a-zA-Z0-9]{8})$/); })) { $("div").text("pass"); } else { $("div").text("fail"); } });
Any ideas?
A regular expression is an object that describes a pattern of characters. The JavaScript RegExp class represents regular expressions, and both String and RegExp define methods that use regular expressions to perform powerful pattern-matching and search-and-replace functions on text.
Your regular expression should look like:
/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{8,}$/
Here is an explanation:
/^ (?=.*\d) // should contain at least one digit (?=.*[a-z]) // should contain at least one lower case (?=.*[A-Z]) // should contain at least one upper case [a-zA-Z0-9]{8,} // should contain at least 8 from the mentioned characters $/
Using individual regular expressions to test the different parts would be considerably easier than trying to get one single regular expression to cover all of them. It also makes it easier to add or remove validation criteria.
Note, also, that your usage of .filter()
was incorrect; it will always return a jQuery object (which is considered truthy in JavaScript). Personally, I'd use an .each()
loop to iterate over all of the inputs, and report individual pass/fail statuses. Something like the below:
$(".buttonClick").click(function () { $("input[type=text]").each(function () { var validated = true; if(this.value.length < 8) validated = false; if(!/\d/.test(this.value)) validated = false; if(!/[a-z]/.test(this.value)) validated = false; if(!/[A-Z]/.test(this.value)) validated = false; if(/[^0-9a-zA-Z]/.test(this.value)) validated = false; $('div').text(validated ? "pass" : "fail"); // use DOM traversal to select the correct div for this input above }); });
Working demo
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With