I have the following Regex in PHP and other code that is doing a great job.
/^(?:(?=[^ ]+\d)(?:[A-Z0-9]+))|(?:[A-Z0-9]+) +?(?=.*\d)(?:[A-Z0-9]+)?
It turns out that Go doesn't support lookheads and I'm at a loss on how to convert it across.
The Debuggex link has some test data I was using to qualify the code before.