It leads me into assumptions that aren't true. I don't need to match groups, all I care about is whether the whole string matches the rules or not. The old regex was grouping so it could do the "or" logic with the pipe. Take out the pipe and I don't need the parens.

What I want is:
^([A-z]{5}|[A-z]{4}\*|[A-z]{3}\*\*|[A-z]{2}\*\*\*)[A-z][A-z*][0-9]{3}[A-z0-9]{2}$

Can't wait to see what RegexBuddy says about this one.