pattern for even number of HEX digits using Nick Gammon's Regexp library

"Now you have two problems."

As I pointed out earlier, the whole "([A-F0-9][A-F0-9])+$" doesn't actually reject odd numbers of hex digits, as long as there are two digits at the end of the string ("ABC" still matches because it has "BC" at the end.)

ATH
ATS [CLASSIC|ULTRALIGHT] [;d|0xhh]
ATR [s[,e|-]]
ATW s [,e|-] [;d|0xhh...]

While regular expressions are OK for searching, I find them a bit "sneaky" for parsing or validation purposes.
I'm not even sure why you want to validate separate from the parsing, anyway, or why you want to be so specific about the format of hex numbers...
And the way I interpret "[;d|0xhh]", I'm not sure that the "ATS ULTRALIGHT ;0xfe" is supposed to match - isn't that ";d" OR a hex number, and not semicolon followed by a hex number?

In this case, I would probably start by uppercasing the entire buffer, which would make your regexps easier to read even if you continue to use them. Tokenize, and validate each token separately...