Testing it, the second one seems to work. The first one didn't. I'll test it more aggressively to be sure.

ctype_alpha would work, except I'm also checking for numbers and other things. I don't want one long, insane REGEX for checking a string so I'm trying to use different REGEX for checking different things.

“Be ashamed to die until you have won some victory for humanity.” -- Horace Mann

I don't know what the difference, but as you said, the first in your OP doesn't work, it maybe use to check after a set different of alpha characters [ ] [ ] as to this which may be used to do the whole string [A-Za-z] in one go

Splitting it into separate checks is the right solution. Regular expressions are used for PATTERNS, not for RULES. [A-Za-z] means "one character, which can be either an upper or lower case english letter." It does not mean "the entire string should contain one upper case and one lower case letter at a minimum."

Splitting it into separate checks is the right solution. Regular expressions are used for PATTERNS, not for RULES. [A-Za-z] means "one character, which can be either an upper or lower case english letter." It does not mean "the entire string should contain one upper case and one lower case letter at a minimum."

That was my thinking from the start. First off, I didn't want a ridiculously long regex to troubleshoot two months from now when I couldn't remember how it worked and multiple checks seem easier to change if my requirements change in the future.