$.validator.addMethod("validpassword", function(value, element) {
return this.optional(element) ||
/^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[\d])(?=.*[\W]).*$/i.test(value);
}, "The password must contain a minimum of one lower case character," +
" one upper case character, one digit and one special character..");
The above regex does not differentiate between uppercase and lowercase. What's wrong?
$.validator.addMethod("validpassword", function(value, element) {
return this.optional(element) ||
/^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[\d])(?=.*[\W]).*$/i.test(value);
}, "The password must contain a minimum of one lower case character," +
" one upper case character, one digit and one special character..");
The above regex does not differentiate between uppercase and lowercase. What's wrong?
Share Improve this question edited Mar 22, 2012 at 21:29 Rob W 349k87 gold badges807 silver badges682 bronze badges asked Mar 22, 2012 at 20:46 Dev JadejaDev Jadeja 1302 silver badges10 bronze badges1 Answer
Reset to default 9Remove the i
flag. It makes the RegEx case-insensitive. Also, extend [\W]
to [\W_]
.
/^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[\d])(?=.*[\W]).*$/i.test(value);
// Remove this ^
// Ok:
/^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[\d])(?=.*[\W_]).*$/.test(value);