- return $_[0] =~ m!^(?:[A-Z]{1,2}\d+ | \d[A-Z]{1,2}\d+) # basic prefix
- (?:/(?:[A-Z]{1,2}\d+ | \d[A-Z]{1,2}\d+))? # / another one (possibly)
- [A-Z]{1,3} # callsign letters
- (?:/(?:[A-Z]{1,2}\d+ | \d[A-Z]{1,2}\d+))? # / another prefix possibly
- (?:/[0-9A-Z]{1,2})? # /0-9A-Z+ possibly
- (?:-\d{1,2})? # - nn possibly
- $!x;
+ return $_[0] =~ m!^
+ (?:(?:[A-Z]{1,2}\d* | \d[A-Z]{1,2}\d*)/)? # out of area prefix /
+ (?:[A-Z]{1,2}\d+ | \d[A-Z]{1,2}\d+)? # main prefix one
+ [A-Z]{1,5} # callsign letters
+ (?:-\d{1,2})? # - nn possibly (eg G8BPQ-8)
+ (?:/[0-9A-Z]{1,7})? # / another prefix, callsign or special label (including /MM, /P as well as /EURO or /LGT) possibly
+ $!x;
+
+ # longest callign allowed is 1X11/1Y11XXXXX-11/XXXXXXX