Regex to check for at least 3 characters?

This should do the work:

^([0-9]*[a-zA-Z]){3,}[0-9]*$

It checks for at least 3 "Zero-or-more numerics + 1 Alpha" sequences + Zero-or-more numerics.


+ means "1 or more occurrences."

{3} means "3 occurrences."

{3,} means "3 or more occurrences."

+ can also be written as {1,}.

* can also be written as {0,}.


To enforce three alphabet characters anywhere,

/(.*[a-z]){3}/i

should be sufficient.

Edit. Ah, you'ved edited your question to say the three alphabet characters must be consecutive. I also see that you may want to enforce that all characters should match one of your "accepted" characters. Then, a lookahead may be the cleanest solution:

/^(?.*[a-z]{3})[a-z0-9]+$/i

Note that I am using the case-insensitive modifier /i in order to avoid having to write a-zA-Z.

Alternative. You can read more about lookaround assertions here. But it may be a little bit over your head at this stage. Here's an alternative that you may find easier to break down in terms of what you already know:

/^([a-z0-9]*[a-z]){3}[a-z0-9]*$/i

Tags:

Regex