diff --git a/tests/i18n/patterns/tests.py b/tests/i18n/patterns/tests.py
index 6ed2c4ffeb..8e77d3fd8f 100644
--- a/tests/i18n/patterns/tests.py
+++ b/tests/i18n/patterns/tests.py
@@ -158,6 +158,11 @@ class URLTranslationTests(URLTestCaseBase):
             # path() URL pattern
             self.assertEqual(translate_url('/en/account/register-as-path/', 'nl'), '/nl/profiel/registreren-als-pad/')
             self.assertEqual(translation.get_language(), 'en')
+            # URL with parameters.
+            self.assertEqual(
+                translate_url('/en/with-arguments/regular-argument/optional.html', 'nl'),
+                '/nl/with-arguments/regular-argument/optional.html',
+            )
 
         with translation.override('nl'):
             self.assertEqual(translate_url('/nl/gebruikers/', 'en'), '/en/users/')
diff --git a/tests/i18n/patterns/urls/default.py b/tests/i18n/patterns/urls/default.py
index b0c2f2585e..22fff166b3 100644
--- a/tests/i18n/patterns/urls/default.py
+++ b/tests/i18n/patterns/urls/default.py
@@ -15,6 +15,11 @@ urlpatterns = [
 urlpatterns += i18n_patterns(
     path('prefixed/', view, name='prefixed'),
     path('prefixed.xml', view, name='prefixed_xml'),
+    re_path(
+        _(r'^with-arguments/(?P<argument>[\w-]+)/(?:(?P<optional>[\w-]+).html)?$'),
+        view,
+        name='with-arguments',
+    ),
     re_path(_(r'^users/$'), view, name='users'),
     re_path(_(r'^account/'), include('i18n.patterns.urls.namespace', namespace='account')),
 )
diff --git a/tests/urlpatterns/path_urls.py b/tests/urlpatterns/path_urls.py
index 953fe6b6d7..b40801b39d 100644
--- a/tests/urlpatterns/path_urls.py
+++ b/tests/urlpatterns/path_urls.py
@@ -11,6 +11,7 @@ urlpatterns = [
     path('users/<id>/', views.empty_view, name='user-with-id'),
     path('included_urls/', include('urlpatterns.included_urls')),
     re_path(r'^regex/(?P<pk>[0-9]+)/$', views.empty_view, name='regex'),
+    re_path(r'^regex_optional/(?P<arg1>\d+)/(?:(?P<arg2>\d+)/)?', views.empty_view, name='regex_optional'),
     path('', include('urlpatterns.more_urls')),
     path('<lang>/<path:url>/', views.empty_view, name='lang-and-path'),
 ]
diff --git a/tests/urlpatterns/tests.py b/tests/urlpatterns/tests.py
index 74503e4518..66212d7df8 100644
--- a/tests/urlpatterns/tests.py
+++ b/tests/urlpatterns/tests.py
@@ -54,6 +54,12 @@ class SimplifiedURLTests(SimpleTestCase):
         self.assertEqual(match.kwargs, {'pk': '1'})
         self.assertEqual(match.route, '^regex/(?P<pk>[0-9]+)/$')
 
+    def test_re_path_with_optional_parameter(self):
+        match = resolve('/regex_optional/1/2/')
+        self.assertEqual(match.url_name, 'regex_optional')
+        self.assertEqual(match.kwargs, {'arg1': '1', 'arg2': '2'})
+        self.assertEqual(match.route, r'^regex_optional/(?P<arg1>\d+)/(?:(?P<arg2>\d+)/)?')
+
     def test_path_lookup_with_inclusion(self):
         match = resolve('/included_urls/extra/something/')
         self.assertEqual(match.url_name, 'inner-extra')