4

This is my current regex check:

const validPassword = (password) => password.match(/^(?=.*\d)(?=.\S)(?=.*[a-zA-Z]).{6,}$/);

I have a check for at least 1 letter and 1 number and at least 6 characters long. However I also want to make sure that there are no spaces anywhere in the string.

So far I'm able to enter in 6 character strings with spaces included :(enter image description here

Found this answer here, but for some reason in my code it's passing.

What is the regular expression for matching that contains no white space in between text?

1 Answer 1

8

It seems you need

/^(?=.*\d)(?=.*[a-zA-Z])\S{6,}$/

Details

  • ^ - start of string
  • (?=.*\d) - 1 digit (at least)
  • (?=.*[a-zA-Z]) - at least 1 letter
  • \S{6,} - 6 or more non-whitespace chars
  • $ - end of string anchor

With a principle of contrast in mind, you may revamp the pattern into

/^(?=\D*\d)(?=[^a-zA-Z]*[a-zA-Z])\S{6,}$/
Sign up to request clarification or add additional context in comments.

2 Comments

That's a great explanation.
Thanks! Geez Regex is always over my head, hardly run into a case where I have to use it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.