diff --git a/src/misc1.c b/src/misc1.c
index d112d9b..554f10b 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -2600,8 +2600,8 @@
 }
 
 /*
- * Check if "fname" starts with "name://".  Return URL_SLASH if it does.
- * Return URL_BACKSLASH for "name:\\".
+ * Check if "fname" starts with "name://" or "name:\\".
+ * Return URL_SLASH for "name://", URL_BACKSLASH for "name:\\".
  * Return zero otherwise.
  */
     int
@@ -2609,7 +2609,22 @@
 {
     char_u *p;
 
-    for (p = fname; isalpha(*p); ++p)
+    // We accept alphabetic characters and a dash in scheme part.
+    // RFC 3986 allows for more, but it increases the risk of matching
+    // non-URL text.
+
+    // first character must be alpha
+    if (!isalpha(*fname))
+	return 0;
+
+    // check body: alpha or dash
+    for (p = fname; (isalpha(*p) || (*p == '-')); ++p)
 	;
+
+    // check last char is not a dash
+    if (p[-1] == '-')
+	return 0;
+
+    // "://" or ":\\" must follow
     return path_is_url(p);
 }
diff --git a/src/testdir/test_buffer.vim b/src/testdir/test_buffer.vim
index 960a760..aa2fe7a 100644
--- a/src/testdir/test_buffer.vim
+++ b/src/testdir/test_buffer.vim
@@ -381,6 +381,35 @@
   call assert_equal('OtherBuffer', bufname())
 endfunc
 
+" Test for buffer match URL(scheme) check
+" scheme is alpha and inner hyphen only.
+func Test_buffer_scheme()
+  CheckMSWindows
+
+  set noshellslash
+  %bwipe!
+  let bufnames = [
+    \ #{id: 'b0', name: 'test://xyz/foo/b0'    , match: 1},
+    \ #{id: 'b1', name: 'test+abc://xyz/foo/b1', match: 0},
+    \ #{id: 'b2', name: 'test_abc://xyz/foo/b2', match: 0},
+    \ #{id: 'b3', name: 'test-abc://xyz/foo/b3', match: 1},
+    \ #{id: 'b4', name: '-test://xyz/foo/b4'   , match: 0},
+    \ #{id: 'b5', name: 'test-://xyz/foo/b5'   , match: 0},
+    \]
+  for buf in bufnames
+    new `=buf.name`
+    if buf.match
+      call assert_equal(buf.name,    getbufinfo(buf.id)[0].name)
+    else
+      " slashes will have become backslashes
+      call assert_notequal(buf.name, getbufinfo(buf.id)[0].name)
+    endif
+    bwipe
+  endfor
+
+  set shellslash&
+endfunc
+
 " Test for the 'maxmem' and 'maxmemtot' options
 func Test_buffer_maxmem()
   " use 1KB per buffer and 2KB for all the buffers
diff --git a/src/version.c b/src/version.c
index 21394aa..940c719 100644
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3153,
+/**/
     3152,
 /**/
     3151,
