I need to create a *single* regex (with .NET 3.5 Regex, if that matters) that allows for all three of the following possibilities:

1. `[A-Z]{2,3}`
2. `[A-Z]{2,3}-[A-Z][A-Z0-9]{1,2}`
3. `[A-Z]{2,3}-[A-Z][A-Z0-9]{1,2}-[A-Z0-9]{2,3}`

So `BIG`, `BIG-A9`, or `BIG-A09-SD` would match, 
but `BIG-F`, `BIG-A9S-`, or `BIG-A09-S` would NOT match. 

I should clarify some things:

* I need to match the entire line, not just a part of it.
* I am trying to provide feedback for a user who is in the process of typing this string into a `TextBox`. Therefore, I am looking for a regex that I can use to test the content of the TextBox whenever it changes. For example, when the user types "A" the feedback should be negative as they have not yet matched case 1. Once they type "AA", the feedback will be positive because they have matched case 1. After typing "AAE", they should still receive positive feedback because they have matched case 1. If they type "AA7", the feedback should go negative. If they then continue typing and enter "AAE-", the feedback should go negative again as they have not met case 2 yet, and have exceeded case 1.

I am pulling my hair out (what little is left). 

Does someone out there know how to express this in a way that will work?