diff --git a/changelogs/unreleased/allow_plus_sign_for_snippets.yml b/changelogs/unreleased/allow_plus_sign_for_snippets.yml
new file mode 100644
index 0000000000000000000000000000000000000000..62d9dd74d07ee81bf6ae419b880418a829f8874a
--- /dev/null
+++ b/changelogs/unreleased/allow_plus_sign_for_snippets.yml
@@ -0,0 +1,4 @@
+---
+title: Allow to use + symbol in filenames
+merge_request: 6644
+author: blackst0ne
diff --git a/lib/gitlab/regex.rb b/lib/gitlab/regex.rb
index 9e0b0e5ea98ea9c831f5b2efbb4ea3a3235af933..a3fa7c1331a3a022c366047f6267f8581937bbdc 100644
--- a/lib/gitlab/regex.rb
+++ b/lib/gitlab/regex.rb
@@ -61,11 +61,11 @@ module Gitlab
     end
 
     def file_name_regex
-      @file_name_regex ||= /\A[[[:alnum:]]_\-\.\@]*\z/.freeze
+      @file_name_regex ||= /\A[[[:alnum:]]_\-\.\@\+]*\z/.freeze
     end
 
     def file_name_regex_message
-      "can contain only letters, digits, '_', '-', '@' and '.'."
+      "can contain only letters, digits, '_', '-', '@', '+' and '.'."
     end
 
     def file_path_regex
diff --git a/spec/features/snippets/create_snippet_spec.rb b/spec/features/snippets/create_snippet_spec.rb
index cb95e7828dbf9cb9306b14e1970624be27f8b405..5470276bf062e5d38cb79efe0a7f24cc7be40cd2 100644
--- a/spec/features/snippets/create_snippet_spec.rb
+++ b/spec/features/snippets/create_snippet_spec.rb
@@ -17,4 +17,18 @@ feature 'Create Snippet', feature: true do
     expect(page).to have_content('My Snippet Title')
     expect(page).to have_content('Hello World!')
   end
+
+  scenario 'Authenticated user creates a snippet with + in filename' do
+    fill_in 'personal_snippet_title', with: 'My Snippet Title'
+    page.within('.file-editor') do
+      find(:xpath, "//input[@id='personal_snippet_file_name']").set 'snippet+file+name'
+      find(:xpath, "//input[@id='personal_snippet_content']").set 'Hello World!'
+    end
+
+    click_button 'Create snippet'
+
+    expect(page).to have_content('My Snippet Title')
+    expect(page).to have_content('snippet+file+name')
+    expect(page).to have_content('Hello World!')
+  end
 end