13
$\begingroup$

Many different countries have different callsign formats. The US call signs typically fit into a very well defined category, but there are exceptions even there. I'm looking for a way to tell if a call sign is a real call sign, that works with international call signs. I'm looking for the full call sign, including after a '/'. I don't care if the call sign is actually assigned to a user, just if it is possible to assign the call to a user. I'm looking for rules as to what would be considered valid. A very general sense is okay too. I don't care if I filter something that could be a call sign, but isn't actually assigned, like 1S prefix calls, but I do want to make sure I get special edge cases, like W100AW.

From what I can tell, the format that is valid appears to include a prefix, which can include up to 1 number and always includes 1 or 2 letters, followed by a number identifier, followed by 1-3 letters. An additional part of the call sign can be included before or after the call that can include a lot of things, including a /AE,/AG,/KH6 (Or other prefix), and possibly other things as well, which I'm not really certain of. I'm looking for something like this, but preferably more detailed.

Basically, I'm trying to tell if a callsign is likely to be real, so I can check to see if I have an invalid call sign in my logging program.

$\endgroup$
1
  • $\begingroup$ After the edit, the question seems answerable to me. (It should be answerable with a reference to the ITU regulations, as @AdamDavisKD8OAS says.) As for suffixes after a / or specific national assignment series, like Adam I suggest you consider each country separately for that. For countries with unknown formats for that part, you may simply want to flag them as something to watch out for. $\endgroup$
    – user
    Jan 30, 2014 at 15:37

5 Answers 5

13
$\begingroup$

Callsigns, per ITU regulations, consist of a prefix and a suffix. The prefix must be obtained from this table:

Table of International Call Sign Series (Appendix 42 to the RR)

And is assigned on a per-country basis. The suffix is then determined by that country's internal radio regulations, and there is no standard that will make this easy for you. You'll need to research each country's regulation and standard and include hundreds of different rules if you need to determine validity to that degree.

However, you can eliminate a lot of bad callsigns simply by verifying that the prefix is valid, using the above list.

The general guidelines on the formation of a whole callsign, including what the suffix may contain, are fairly well explained in this wikipedia article:

ITU prefix (amateur stations)

There are rare exceptions, but generally you start with the country prefix, add a numeral, then add a suffix of between 1 and 4 alphanumeric characters. The last character has to be a letter, not a number, but otherwise there's no regulation internationally.

$\endgroup$
2
  • $\begingroup$ It seems to me that the number could be anything from 1-4 digits, is that a true statement? I don't think I've ever seen one larger than 4 digits, but... $\endgroup$ Jan 30, 2014 at 19:45
  • 1
    $\begingroup$ @PearsonArtPhoto I haven't read through enough of the ITU regulations to know that. I see that the wikipedia page only lists up to 4, and says that anything else is a rare exception. I think the only way to know for sure is to read the regulations yourself. $\endgroup$
    – Adam Davis
    Jan 30, 2014 at 20:14
3
$\begingroup$

Starting with Adam's answer, I did a bit of research into the matter. Using a list of LOTW call signs, I tried the following regular expression \d?[a-zA-Z]{1,2}\d{1,4}[a-zA-Z]{1,4}, which simply says a number can optionally start, followed by 1 or 2 letters, followed by 1-4 numbers, and 1-4 letters. I'm filtering out any extra parts (Stuff before and after a /. Given this, I still failed on the following call signs:

4D71/N0NM
4X130RISHON
9N38
AX3GAMES
BV100
DA2MORSE
DB50FIRAC
DL50FRANCE
FBC5AGB
FBC5CWU
FBC5LMJ
FBC5NOD
FBC5YJ
FBC6HQP
GB50RSARS
HA80MRASZ
HB9STEVE
HG5FIRAC
HG80MRASZ
II050SCOUT
IP1METEO
J42004A
J42004Q
LM1814
LM2T70Y
LM9L40Y
LM9L40Y/P
OEM2BZL
OEM3SGU
OEM3SGU/3
OEM6CLD
OEM8CIQ
OM2011GOOOLY
ON1000NOTGER
ON70REDSTAR
PA09SHAPE
PA65VERON
PA90CORUS
PG50RNARS
PG540BUFFALO
S55CERKNO
TM380
TX9
TYA11
U5ARTEK/A
V6T1
VI2AJ2010
VI2FG30
VI4WIP50
VU3DJQF1
VX31763
WD4
XUF2B
YI9B4E
YO1000LEANY
ZL4RUGBY
ZS9MADIBA

So I guess there isn't a standard definition, but you should be able to recognize most of them with a similar pattern, and just be aware that there are others out there as well.

$\endgroup$
3
  • $\begingroup$ My J7Y callsign was revoked by Dominica's NTRC as not conforming to IARU "recommendations." It was replaced with J75Y, since the country prefix is "J7," the "number" is now "5" and the "letters" are "Y". Note, however, that some countries continue to issue nonconforming callsigns, like E2A, E2C, E2E, E2T, E2X and E2Z assigned to various organizations in Thailand. $\endgroup$
    – Brian K1LI
    Sep 17, 2018 at 11:15
  • 1
    $\begingroup$ The same would apply for many ‘contest’ callsigns around the world. All the Thai examples given above are special short contest callsigns (I briefly operated E2E a year or two back), and many other countries issue special short callsigns for contests (M0A, B7G, etc.) $\endgroup$
    – Scott Earle
    Sep 17, 2018 at 13:46
  • $\begingroup$ For the record, Canada issues special event callsigns that violate "the last character has to be a letter, not a number." For example, VB3Q70 has been issued to recognize the Queen's "platinum jubilee" (i.e. 70 years) in 2022. Various other "anniversary" callsigns issued in Canada also end with digits indicating the number of years. $\endgroup$
    – Bezewy
    Nov 17, 2021 at 20:49
3
$\begingroup$

If you check out the resources provided by Alex Shovkoplyas, VE3NEA in http://www.dxatlas.com/Dev/ you will find a variety of examples of callsign parsing. His prefix list contains REGEX matches for each country, but be aware that he uses HIS OWN syntax for callsign matching:

The 'Mask' field in PREFIX.LST is used for callsign resolution. The following meta symbols are used in the mask:

'@' - any letter '#' - any digit '?' - any character (letter or digit) [AC] - A or C [A-C] - A, B, or C. [AC-E] - A, C, D, or E. '.' - no characters are allowed after this simbol. Example: '??#@@.' matches all calls with 2-letter suffixes.

His symbols MUST be substituted for other types, to use the mask with other languages:Javascript, VB.Net, PHP, etc.

You can also find REGEX strings in the AD1C Country Files.

$\endgroup$
2
$\begingroup$

For United States Amateur Radio Call Signs I use this.

Regex TheCallSignRegex = new Regex(@"^(A[A-L]|K[A-Z]|N[A-Z]|W[A-Z]|K|N|W){1}\d{1}[A-Z]{1,3}", RegexOptions.Compiled | RegexOptions.IgnoreCase);

String Call = "w6am"; // Trailing spaces in the string 'Call' will return a failed match 
Match  TheMatch = TheCallSignRegex.Match(Call);

Boolean ItLooksLikeAUSACallSign = (TheMatch.Success && TheMatch.Index == 0 && TheMatch.Value.Length == Call.Length);

Note : Since I used RegexOption.Compiled it is preferred that this Regix "TheCallSignRegex" object be created in a static constructor so it is only executed once during the run of a program.

$\endgroup$
3
  • 2
    $\begingroup$ Hi and welcome to ham.stackexchange.com! I took the liberty of editing your answer and putting the code into a code block. You should mention what language your code is in. (Looks like C# to me.) $\endgroup$
    – rclocher3
    May 15, 2020 at 20:04
  • 1
    $\begingroup$ BTW US suffixes can't begin with "X". $\endgroup$
    – rclocher3
    May 15, 2020 at 20:04
  • $\begingroup$ >>BTW US suffixes can't begin with "X".... Not quite true. Calls can be of the form K1XA, K1XAA or KC1XA, just not KC1XAA. And there are more restrictions. The rules are fairly complex. fcc.gov/amateur-call-sign-systems $\endgroup$
    – mike65535
    May 19, 2020 at 13:30
0
$\begingroup$

I've used Adam's excellent answer to write a callsign regex converter tool (in Python) that will process the ITU list in Excel format, and verify all callsigns given to it on the commandline against the prefix list, showing the respective country:

$ ./callsign_regex.py CallSignSeriesRanges.xlsx DO1GL W100AW D3ADBEEF 
DO1GL - Germany (Federal Republic of)
W100AW - United States of America
D3ADBEEF does not match

The tool will also generate machine-readable files with RegEx and JSON data that can be more easily used in your amateur radio app.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .