diff --git a/readthedocs/profiles/urls/public.py b/readthedocs/profiles/urls/public.py
index 028b66caa28..2a9c458e6fd 100644
--- a/readthedocs/profiles/urls/public.py
+++ b/readthedocs/profiles/urls/public.py
@@ -7,7 +7,7 @@
 
 
 urlpatterns = [
-    url(r'^(?P<username>[\w@.-]+)/$',
+    url(r'^(?P<username>[+\w@.-]+)/$',
         views.profile_detail,
         {'template_name': 'profiles/public/profile_detail.html'},
         name='profiles_profile_detail'),
diff --git a/readthedocs/rtd_tests/tests/test_urls.py b/readthedocs/rtd_tests/tests/test_urls.py
index 21460da8f85..27a14a27b99 100644
--- a/readthedocs/rtd_tests/tests/test_urls.py
+++ b/readthedocs/rtd_tests/tests/test_urls.py
@@ -51,3 +51,25 @@ def test_version_url_with_caps(self):
             kwargs={'type_': 'pdf', 'version_slug': u'1.4.X', 'project_slug': u'django'}
         )
         self.assertTrue(url)
+
+
+class TestProfileDetailURLs(TestCase):
+
+    def test_profile_detail_url(self):
+        url = reverse(
+            'profiles_profile_detail',
+            kwargs={'username': 'foo+bar'}
+            )
+        self.assertEqual(url, '/profiles/foo+bar/')
+
+        url = reverse(
+            'profiles_profile_detail',
+            kwargs={'username': 'abc+def@ghi.jkl'}
+            )
+        self.assertEqual(url, '/profiles/abc+def@ghi.jkl/')
+
+        url = reverse(
+            'profiles_profile_detail',
+            kwargs={'username': 'abc-def+ghi'}
+            )
+        self.assertEqual(url, '/profiles/abc-def+ghi/')