diff --git a/faker/providers/address/en_US/__init__.py b/faker/providers/address/en_US/__init__.py
index 451d5d72..4d466336 100644
--- a/faker/providers/address/en_US/__init__.py
+++ b/faker/providers/address/en_US/__init__.py
@@ -272,13 +272,19 @@ class Provider(AddressProvider):
         'West Virginia', 'Wisconsin', 'Wyoming',
     )
     states_abbr = (
-        'AL', 'AK', 'AS', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'DC', 'FM', 'FL',
-        'GA', 'GU', 'HI', 'ID', 'IL', 'IN', 'IA', 'KS', 'KY', 'LA', 'ME', 'MH',
-        'MD', 'MA', 'MI', 'MN', 'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ', 'NM',
-        'NY', 'NC', 'ND', 'MP', 'OH', 'OK', 'OR', 'PW', 'PA', 'PR', 'RI', 'SC',
-        'SD', 'TN', 'TX', 'UT', 'VT', 'VI', 'VA', 'WA', 'WV', 'WI', 'WY',
+        'AL', 'AK', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'DC', 'FL', 'GA', 'HI',
+        'ID', 'IL', 'IN', 'IA', 'KS', 'KY', 'LA', 'ME', 'MD', 'MA', 'MI', 'MN',
+        'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ', 'NM', 'NY', 'NC', 'ND', 'OH',
+        'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VT', 'VA', 'WA',
+        'WV', 'WI', 'WY',
     )
 
+    territories_abbr = (
+        'AS', 'FM', 'GU', 'MH', 'MP', 'PW', 'PR', 'VI',
+    )
+
+    states_and_territories_abbr = states_abbr + territories_abbr
+
     military_state_abbr = ('AE', 'AA', 'AP')
 
     military_ship_prefix = ('USS', 'USNS', 'USNV', 'USCGC')
@@ -329,7 +335,15 @@ class Provider(AddressProvider):
     def state(self):
         return self.random_element(self.states)
 
-    def state_abbr(self):
+    def state_abbr(self, include_territories=True):
+        """
+        :returns: A random state or territory abbreviation.
+
+        :param include_territories: If True, territories will be included.
+            If False, only states will be returned.
+        """
+        if include_territories:
+            self.random_element(self.states_and_territories_abbr)
         return self.random_element(self.states_abbr)
 
     def postcode(self):

State Abbreviations for en_US have too many
The output of the state provider in address only outputs the 50 states, but the state_abbr has 59 potential outputs

### Steps to reproduce

Generate a value using the state_abbr provider

### Expected behavior

The value should be one of the 50 US states abbreviations

### Actual behavior

The value is one of the 50 US states, Washington DC (DC), American Samoa (AS), Micronesia (FM), Guam (GU), Marshall Islands (MH), Northern Marianas (MP), Palau (PW), Puerto Rico (PR), and Virgin Isles (VI). It appears the list was pulled from sources such as https://www.factmonster.com/us/postal-information/state-abbreviations-and-state-postal-codes that list every possible postal state abbreviation. 
diff --git a/tests/providers/test_address.py b/tests/providers/test_address.py
index 752b294e..7210f8fa 100644
--- a/tests/providers/test_address.py
+++ b/tests/providers/test_address.py
@@ -313,6 +313,12 @@ class TestEnUS(unittest.TestCase):
     def test_state_abbr(self):
         state_abbr = self.factory.state_abbr()
         assert isinstance(state_abbr, string_types)
+        states_and_territories = EnUsProvider.states_and_territories_abbr
+        assert state_abbr in states_and_territories
+
+    def test_state_abbr_no_territories(self):
+        state_abbr = self.factory.state_abbr(include_territories=False)
+        assert isinstance(state_abbr, string_types)
         assert state_abbr in EnUsProvider.states_abbr
 
     def test_postcode(self):

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest pytest-cov pytest-xdist pytest-mock pytest-asyncio
3.6
tests/requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==22.2.0
certifi==2021.5.30
coverage==6.2
dnspython==2.2.1
email-validator==1.0.3
execnet==1.9.0
-e git+https://github.com/joke2k/faker.git@fc546bca9b4f411e8565aeb5ddd9ccee8de59494#egg=Faker
idna==3.10
importlib-metadata==4.8.3
iniconfig==1.1.1
mock==2.0.0
packaging==21.3
pbr==6.1.1
pluggy==1.0.0
py==1.11.0
pyparsing==3.1.4
pytest==7.0.1
pytest-asyncio==0.16.0
pytest-cov==4.0.0
pytest-mock==3.6.1
pytest-xdist==3.0.2
python-dateutil==2.9.0.post0
six==1.17.0
text-unidecode==1.2
tomli==1.2.3
typing_extensions==4.1.1
UkPostcodeParser==1.1.2
zipp==3.6.0

name: faker
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==22.2.0
      - coverage==6.2
      - dnspython==2.2.1
      - email-validator==1.0.3
      - execnet==1.9.0
      - idna==3.10
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - mock==2.0.0
      - packaging==21.3
      - pbr==6.1.1
      - pluggy==1.0.0
      - py==1.11.0
      - pyparsing==3.1.4
      - pytest==7.0.1
      - pytest-asyncio==0.16.0
      - pytest-cov==4.0.0
      - pytest-mock==3.6.1
      - pytest-xdist==3.0.2
      - python-dateutil==2.9.0.post0
      - six==1.17.0
      - text-unidecode==1.2
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - ukpostcodeparser==1.1.2
      - zipp==3.6.0
prefix: /opt/conda/envs/faker

tests/providers/test_address.py::TestEnUS::test_state_abbr tests/providers/test_address.py::TestEnUS::test_state_abbr_no_territories
tests/providers/test_address.py::TestBaseProvider::test_alpha_2_country_codes tests/providers/test_address.py::TestBaseProvider::test_alpha_2_country_codes_as_default tests/providers/test_address.py::TestBaseProvider::test_alpha_3_country_codes tests/providers/test_address.py::TestBaseProvider::test_bad_country_code_representation tests/providers/test_address.py::TestAr_AA::test_alpha_2_country_codes tests/providers/test_address.py::TestAr_AA::test_alpha_2_country_codes_as_default tests/providers/test_address.py::TestAr_AA::test_alpha_3_country_codes tests/providers/test_address.py::TestAr_AA::test_bad_country_code_representation tests/providers/test_address.py::TestDeAT::test_city tests/providers/test_address.py::TestDeAT::test_country tests/providers/test_address.py::TestDeAT::test_latitude tests/providers/test_address.py::TestDeAT::test_longitude tests/providers/test_address.py::TestDeAT::test_postcode tests/providers/test_address.py::TestDeAT::test_state tests/providers/test_address.py::TestDeAT::test_street_suffix_long tests/providers/test_address.py::TestDeAT::test_street_suffix_short tests/providers/test_address.py::TestDeDE::test_city tests/providers/test_address.py::TestDeDE::test_country tests/providers/test_address.py::TestDeDE::test_state tests/providers/test_address.py::TestDeDE::test_street_suffix_long tests/providers/test_address.py::TestDeDE::test_street_suffix_short tests/providers/test_address.py::TestFiFI::test_city tests/providers/test_address.py::TestFiFI::test_street_suffix tests/providers/test_address.py::TestElGR::test_city tests/providers/test_address.py::TestElGR::test_latlng tests/providers/test_address.py::TestElGR::test_line_address tests/providers/test_address.py::TestElGR::test_region tests/providers/test_address.py::TestEnAU::test_city_prefix tests/providers/test_address.py::TestEnAU::test_postcode tests/providers/test_address.py::TestEnAU::test_state tests/providers/test_address.py::TestEnAU::test_state_abbr tests/providers/test_address.py::TestEnNZ::test_postcode tests/providers/test_address.py::TestEnNZ::test_state tests/providers/test_address.py::TestEnCA::test_city_prefix tests/providers/test_address.py::TestEnCA::test_postal_code_letter tests/providers/test_address.py::TestEnCA::test_postalcode tests/providers/test_address.py::TestEnCA::test_postcode tests/providers/test_address.py::TestEnCA::test_province tests/providers/test_address.py::TestEnCA::test_province_abbr tests/providers/test_address.py::TestEnCA::test_secondary_address tests/providers/test_address.py::TestEnGB::test_postcode tests/providers/test_address.py::TestEnUS::test_city_prefix tests/providers/test_address.py::TestEnUS::test_military_apo tests/providers/test_address.py::TestEnUS::test_military_dpo tests/providers/test_address.py::TestEnUS::test_military_ship tests/providers/test_address.py::TestEnUS::test_military_state tests/providers/test_address.py::TestEnUS::test_postcode tests/providers/test_address.py::TestEnUS::test_state tests/providers/test_address.py::TestEnUS::test_zipcode tests/providers/test_address.py::TestEnUS::test_zipcode_plus4 tests/providers/test_address.py::TestHuHU::test_address tests/providers/test_address.py::TestHuHU::test_postcode_first_digit tests/providers/test_address.py::TestHuHU::test_street_address tests/providers/test_address.py::TestHuHU::test_street_address_with_county tests/providers/test_address.py::TestJaJP::test_address tests/providers/test_address.py::TestKoKR::test_address tests/providers/test_address.py::TestNeNP::test_address tests/providers/test_address.py::TestNoNO::test_address tests/providers/test_address.py::TestNoNO::test_city_suffix tests/providers/test_address.py::TestNoNO::test_postcode tests/providers/test_address.py::TestNoNO::test_street_suffix tests/providers/test_address.py::TestZhTW::test_address tests/providers/test_address.py::TestZhCN::test_address tests/providers/test_address.py::TestPtBr::test_address tests/providers/test_address.py::TestPtPT::test_distrito tests/providers/test_address.py::TestPtPT::test_freguesia
faker/providers/address/en_US/__init__.py
faker/providers/address/en_US/__init__.py