StreetAddress
Parses a US street address string and returns a normalized Address object. Returns nil when the string is not a recognized US address format.
This is a port of the Perl module Geo::StreetAddress::US originally written by Schuyler D. Erle.
Ruby Version
Requires Ruby 3.3 or later. For Ruby 2.x support, use gem version 1.0.6.
Installation
gem install StreetAddressthen in your code
require 'street_address'or in your Gemfile
gem 'StreetAddress', require: 'street_address'Basic Usage
require 'street_address'
address = StreetAddress::US.parse("1600 Pennsylvania Ave, Washington, DC, 20500")
address.number # "1600"
address.street # "Pennsylvania"
address.street_type # "Ave"
address.city # "Washington"
address.state # "DC"
address.state_name # "District Of Columbia"
address.postal_code # "20500"
address.intersection? # false
address.to_s # "1600 Pennsylvania Ave, Washington, DC 20500"
address.to_s(:line1) # "1600 Pennsylvania Ave"
address.to_s(:line2) # "Washington, DC 20500"
address.to_h # { number: "1600", street: "Pennsylvania", ... }
address = StreetAddress::US.parse("1600 Pennsylvania Ave")
address.street # "Pennsylvania"
address.number # "1600"
address.state # nilZIP+4 Support
address = StreetAddress::US.parse("5904 Richmond Hwy Ste 340 Alexandria VA 22303-1864")
address.postal_code # "22303"
address.postal_code_ext # "1864"
address.full_postal_code # "22303-1864"
# Also works without the hyphen
address = StreetAddress::US.parse("5904 Richmond Hwy Ste 340 Alexandria VA 223031864")
address.postal_code_ext # "1864"Intersection Parsing
address = StreetAddress::US.parse("Hollywood Blvd and Vine St, Los Angeles, CA")
address.intersection? # true
address.street # "Hollywood"
address.street_type # "Blvd"
address.street2 # "Vine"
address.street_type2 # "St"Stricter Parsing
address = StreetAddress::US.parse_address("1600 Pennsylvania Avenue")
# nil - not enough information to be a full address
address = StreetAddress::US.parse_address("1600 Pennsylvania Ave, Washington, DC, 20500")
# Returns Address object - full address providedKnown Limitations
- US addresses only (returns
nilfor international addresses) - PO Boxes are not supported
- Military addresses (APO/FPO) are not supported
- Rural routes (RR) and highway contract routes (HC) are not supported
- Addresses ending in "United States" or "USA" may not parse correctly
License
The MIT License
Copyright (c) 2007-2026 Derrek Long and Contributors