Last active
January 17, 2019 21:40
-
-
Save leoherzog/0d725c905b65a56326b64c3e98aa6c76 to your computer and use it in GitHub Desktop.
Amateur (Ham) Radio US Vanity Callsign Rules for Javascript
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // http://www.arrl.org/vanity-call-signs | |
| String.prototype.isValidCallsign = function() { | |
| const sign = this.toString().toUpperCase().trim(); | |
| // quick obvious check that might save time in large sets | |
| if (sign.length < 3 || sign.length > 6) { | |
| return false; | |
| } | |
| // the general structure of the us callsign | |
| var validSign = /^[AKNW][A-Z]?[0-9][A-Z]{1,3}$/; | |
| if (!validSign.test(sign)) { | |
| return false; | |
| } | |
| // it's a valid sign so far. now to test if it breaks | |
| // specific fcc rules about what it can't be | |
| var rule1 = /^KA[2-9][A-Z]{2}$/.test(sign); | |
| var rule2 = /^KC4AA[A-F]$/.test(sign); | |
| var rule3 = /^KC4US[A-Z]$/.test(sign); | |
| var rule4 = /^KG4[A-Z]{2}$/.test(sign); | |
| var rule5 = /^KC6[A-Z]{2}$/.test(sign); | |
| var rule6 = /^KL9K[A-H][A-Z]$/.test(sign); | |
| var rule7 = /^KX6[A-Z]{2}$/.test(sign); | |
| var rule8 = /SOS/g.test(sign); | |
| var rule9 = /Q[R-U][A-Z]/g.test(sign); | |
| var rule10 = /^A[M-Z]/.test(sign); | |
| var rule11 = sign.length == 6 && sign.charAt(3) == "X"; | |
| var rule12 = /^[AKNW]F[0-9]EMA$/.test(sign); | |
| var rule13 = sign.length == 6 && /^A{A-L}/.test(sign); | |
| var rule14 = sign.length == 6 && /^N[A-Z]/.test(sign); | |
| var rule15 = sign.length == 6 && /^W[CKMRT]/.test(sign); | |
| var rule16 = /^[KNW]P[06789]/.test(sign); | |
| var rule17 = /^[KNW][0-9][A-Z]$/.test(sign); | |
| // does it break any of the rules? | |
| var breaksRules = rule1 || rule2 || rule3 || rule4 || rule5 || rule6 || rule7 || rule8 || rule9 || rule10 || rule11 || rule12 || rule13 || rule14 || rule15 || rule16 || rule17; | |
| return !breaksRules; | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| console.log("kd8vyx".isValidCallsign()); | |
| console.log("blah".isValidCallsign()); | |
| console.log("aa8aa".isValidCallsign()); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment