Just when I though I knew a tiny bit about regex, and now you've blown that idea away.

I haven't got to anchors in the tutorial yet, but once I do, I'll try figure out what you did, and why.
But alas, that change only work for R513. R514 & R515 are still being flagged as incorrect.
No, no. That's not strictly true, as mH R514 is flagged as having the incorrect MH name format, and mH R515 as having the incorrect FW name format, so I've obviously screwed up something else further down the script.
So let me go back to school for me this weekend, work out why that works, and then apply that to the other two checks, as I'm sure that will fix them too.
Many thanks for your help and suggestion.
Leigh