where the aa-BB, etc. patterns are simply "or"ed together using the | operator.

To further break this apart, all of the /, ., and - characters need to be escaped with a \ to prevent the regex from interpreting them as syntax. The (?: notation means to group the things being "or"ed without storing it in a backreference variable (this makes it more efficient if you don't care about retaining the value selected).

Here is a link to a demonstration (maybe this can help you play around with the regex here to get to exactly which character combinations you want)

Thanks Jacob. No that is good. But I need it to only match a limited number of those values, not just lower-UPPER but, specifically, xx-XX, yy-YY, zz-ZZ (for example) and everything else (ie aa-AA, bb-BB, cc-CC, and so on) will not match and cause the redirect to the not found url.
–
Code SherpaJun 21 '11 at 22:17

Thanks again Jacob. Sorry, I am really not a regex guy. how do I make sure the full URL gets evaluated and the expression "HERE" is where the regex happens. such as: ab.cdefgh.com/HERE/index.aspx
–
Code SherpaJun 21 '11 at 22:34

The first "^" means the start of the URI (the part that comes after the first /) The next part is the [^(don'tmatchthis|orthis|orthisone)] is the next part of the match. The "^" in the [] means don't match the stuff in there. Finally the "/.*" meands a "/" followed by any number of chars.
–
Jacob EggersJun 21 '11 at 22:56