Skip to content

Instantly share code, notes, and snippets.

@kitwalker12
Last active May 17, 2016 20:41
Show Gist options
  • Save kitwalker12/d5a3cea6dd7dda28cc78455066812a61 to your computer and use it in GitHub Desktop.
Save kitwalker12/d5a3cea6dd7dda28cc78455066812a61 to your computer and use it in GitHub Desktop.
US Zip Code regex. Regex to find allowed prefixes for US Zipcodes minus Military Bases
  • Regex generated via frak in clojure

  • Install clojure and leiningen brew install leiningen

  • Create new app lein new app frakproj

  • cd into new directory frakproj

  • edit project.clj to add [frak "0.1.6"] as dependency. the new file should look like this:

    (defproject frakproj "0.1.0-SNAPSHOT"
    :description "FIXME: write description"
    :url "http://example.com/FIXME"
    :license {:name "Eclipse Public License"
              :url "http://www.eclipse.org/legal/epl-v10.html"}
    :dependencies [[org.clojure/clojure "1.8.0"]
    [frak "0.1.6"]]
    :main ^:skip-aot frakproj.core
    :target-path "target/%s"
    :profiles {:uberjar {:aot :all}})
    
  • run lein deps to install frak

  • run lein repl

  • In repl, run:

    • (require 'frak)
    • (frak/pattern ["005" "006" "007" "008" "009" "010" "011" "012" "013" "014" "015" "016" "017" "018" "019" "020" "021" "022" "023" "024" "025" "026" "027" "028" "029" "030" "031" "032" "033" "034" "035" "036" "037" "038" "039" "040" "041" "042" "043" "044" "045" "046" "047" "048" "049" "050" "051" "052" "053" "054" "055" "056" "057" "058" "059" "060" "061" "062" "063" "064" "065" "066" "067" "068" "069" "070" "071" "072" "073" "074" "075" "076" "077" "078" "079" "080" "081" "082" "083" "084" "085" "086" "087" "088" "089" "100" "101" "102" "103" "104" "105" "106" "107" "108" "109" "110" "111" "112" "113" "114" "115" "116" "117" "118" "119" "120" "121" "122" "123" "124" "125" "126" "127" "128" "129" "130" "131" "132" "133" "134" "135" "136" "137" "138" "139" "140" "141" "142" "143" "144" "145" "146" "147" "148" "149" "150" "151" "152" "153" "154" "155" "156" "157" "158" "159" "160" "161" "162" "163" "164" "165" "166" "167" "168" "169" "170" "171" "172" "173" "174" "175" "176" "177" "178" "179" "180" "181" "182" "183" "184" "185" "186" "187" "188" "189" "190" "191" "192" "193" "194" "195" "196" "197" "198" "199" "200" "201" "202" "203" "204" "205" "206" "207" "208" "209" "210" "211" "212" "214" "215" "216" "217" "218" "219" "220" "221" "222" "223" "224" "225" "226" "227" "228" "229" "230" "231" "232" "233" "234" "235" "236" "237" "238" "239" "240" "241" "242" "243" "244" "245" "246" "247" "248" "249" "250" "251" "252" "253" "254" "255" "256" "257" "258" "259" "260" "261" "262" "263" "264" "265" "266" "267" "268" "270" "271" "272" "273" "274" "275" "276" "277" "278" "279" "280" "281" "282" "283" "284" "285" "286" "287" "288" "289" "290" "291" "292" "293" "294" "295" "296" "297" "298" "299" "300" "301" "302" "303" "304" "305" "306" "307" "308" "309" "310" "311" "312" "313" "314" "315" "316" "317" "318" "319" "320" "321" "322" "323" "324" "325" "326" "327" "328" "329" "330" "331" "332" "333" "334" "335" "336" "337" "338" "339" "341" "342" "344" "346" "347" "349" "350" "351" "352" "354" "355" "356" "357" "358" "359" "360" "361" "362" "363" "364" "365" "366" "367" "368" "369" "370" "371" "372" "373" "374" "375" "376" "377" "378" "379" "380" "381" "382" "383" "384" "385" "386" "387" "388" "389" "390" "391" "392" "393" "394" "395" "396" "397" "398" "399" "400" "401" "402" "403" "404" "405" "406" "407" "408" "409" "410" "411" "412" "413" "414" "415" "416" "417" "418" "420" "421" "422" "423" "424" "425" "426" "427" "430" "431" "432" "433" "434" "435" "436" "437" "438" "439" "440" "441" "442" "443" "444" "445" "446" "447" "448" "449" "450" "451" "452" "453" "454" "455" "456" "457" "458" "459" "460" "461" "462" "463" "464" "465" "466" "467" "468" "469" "470" "471" "472" "473" "474" "475" "476" "477" "478" "479" "480" "481" "482" "483" "484" "485" "486" "487" "488" "489" "490" "491" "492" "493" "494" "495" "496" "497" "498" "499" "500" "501" "502" "503" "504" "505" "506" "507" "508" "509" "510" "511" "512" "513" "514" "515" "516" "520" "521" "522" "523" "524" "525" "526" "527" "528" "530" "531" "532" "534" "535" "537" "538" "539" "540" "541" "542" "543" "544" "545" "546" "547" "548" "549" "550" "551" "553" "554" "555" "556" "557" "558" "559" "560" "561" "562" "563" "564" "565" "566" "567" "570" "571" "572" "573" "574" "575" "576" "577" "580" "581" "582" "583" "584" "585" "586" "587" "588" "590" "591" "592" "593" "594" "595" "596" "597" "598" "599" "600" "601" "602" "603" "604" "605" "606" "607" "608" "609" "610" "611" "612" "613" "614" "615" "616" "617" "618" "619" "620" "622" "623" "624" "625" "626" "627" "628" "629" "630" "631" "633" "634" "635" "636" "637" "638" "639" "640" "641" "644" "645" "646" "647" "648" "649" "650" "651" "652" "653" "654" "655" "656" "657" "658" "660" "661" "662" "664" "665" "666" "667" "668" "669" "670" "671" "672" "673" "674" "675" "676" "677" "678" "679" "680" "681" "683" "684" "685" "686" "687" "688" "689" "690" "691" "692" "693" "700" "701" "703" "704" "705" "706" "707" "708" "710" "711" "712" "713" "714" "716" "717" "718" "719" "720" "721" "722" "723" "724" "725" "726" "727" "728" "729" "730" "731" "733" "734" "735" "736" "737" "738" "739" "740" "741" "743" "744" "745" "746" "747" "748" "749" "750" "751" "752" "753" "754" "755" "756" "757" "758" "759" "760" "761" "762" "763" "764" "765" "766" "767" "768" "769" "770" "771" "772" "773" "774" "775" "776" "777" "778" "779" "780" "781" "782" "783" "784" "785" "786" "787" "788" "789" "790" "791" "792" "793" "794" "795" "796" "797" "798" "799" "800" "801" "802" "803" "804" "805" "806" "807" "808" "809" "810" "811" "812" "813" "814" "815" "816" "820" "821" "822" "823" "824" "825" "826" "827" "828" "829" "830" "831" "832" "833" "834" "835" "836" "837" "838" "840" "841" "842" "843" "844" "845" "846" "847" "850" "852" "853" "855" "856" "857" "859" "860" "863" "864" "865" "870" "871" "872" "873" "874" "875" "877" "878" "879" "880" "881" "882" "883" "884" "885" "889" "890" "891" "893" "894" "895" "897" "898" "900" "901" "902" "903" "904" "905" "906" "907" "908" "910" "911" "912" "913" "914" "915" "916" "917" "918" "919" "920" "921" "922" "923" "924" "925" "926" "927" "928" "930" "931" "932" "933" "934" "935" "936" "937" "938" "939" "940" "941" "942" "943" "944" "945" "946" "947" "948" "949" "950" "951" "952" "953" "954" "955" "956" "957" "958" "959" "960" "961" "967" "968" "969" "970" "971" "972" "973" "974" "975" "976" "977" "978" "979" "980" "981" "982" "983" "984" "985" "986" "988" "989" "990" "991" "992" "993" "994" "995" "996" "997" "998" "999"])
    • This should return the regex generated from the list of allowed US zip code prefixes
var regex = (?:2(?:1[0124-9]|6[0-8]|[02345789][0-9])|4(?:[03-9][0-9]|2[0-7]|1[0-8])|8(?:7[0-5789]|[02][0-9]|6[0345]|8[0-59]|9[0134578]|5[0235679]|4[0-7]|1[0-6]|3[0-8])|6(?:5[0-8]|[017][0-9]|4[014-9]|[38][013-9]|6[0124-9]|2[02-9]|9[0-3])|1[0-9][0-9]|9(?:[02][0-8]|6[01789]|[134579][0-9]|8[0-689])|3(?:5[0124-9]|[0-36-9][0-9]|4[124679])|0(?:0[5-9]|[12345678][0-9])|7(?:1[0-46-9]|[25-9][0-9]|[34][013-9]|0[01345678])|5(?:[28][0-8]|[67][0-7]|3[01245789]|[049][0-9]|1[0-6]|5[013-9]));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment