How do I check if a string contains at least one number, letter, and character that is neither a number or letter?

Michael Drum picture Michael Drum · Nov 30, 2016 · Viewed 9k times · Source

The language is javascript.

Strings that would pass:

JavaScript1*

Pu54 325

()9c

Strings that would not pass:

654fff

%^(dFE

I tried the following:

var matches = password.match(/\d+/g);
if(matches != null)
 {
        //password contains a number
        //check to see if string contains a letter
        if(password.match(/[a-z]/i))
        {
            //string contains a letter and a number
        }
 }

Answer

sidanmor picture sidanmor · Nov 30, 2016

You can use Regex:

I took it from here: Regex for Password

var checkPassword = function(password){
    return !!password.match(/^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%* #+=\(\)\^?&])[A-Za-z\d$@$!%* #+=\(\)\^?&]{3,}$/);
};

I use this Regex:

Minimum 3 characters at least 1 Alphabet, 1 Number and 1 Special Character:

"^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%* #=+\(\)\^?&])[A-Za-z\d$@$!%* #=+\(\)\^?&]{3,}$"

This regex will enforce these rules:

At least one English letter, (?=.*?[A-Za-z])

At least one digit, (?=.*\d)

At least one special character, (?=.[$@$!% #+=()\^?&]) Add more if you like...

Minimum length of 3 characters (?=.[$@$!% #?&])[A-Za-z\d$@$!%* #+=()\^?&]{3,} include spaces

If you want to add more special characters, you can add it to the Regex like I have added '(' (you need to add it in two places).

And for those of you who ask yourself what are those two exclamation points, here is the answer: What is the !! (not not) operator in JavaScript?