diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php
index a61518401c..9e1e1cae0e 100644
--- a/phpBB/includes/functions.php
+++ b/phpBB/includes/functions.php
@@ -3317,6 +3317,11 @@ function get_preg_expression($mode)
 		case 'table_prefix':
 			return '#^[a-zA-Z][a-zA-Z0-9_]*$#';
 		break;
+
+		// Matches the predecing dot
+		case 'path_remove_dot_trailing_slash':
+			return '#^(?:(\.)?)+(?:(.+)?)+(?:([\\/\\\])$)#';
+		break;
 	}
 
 	return '';
diff --git a/phpBB/phpbb/controller/helper.php b/phpBB/phpbb/controller/helper.php
index 6c78868dbb..fc19b855c0 100644
--- a/phpBB/phpbb/controller/helper.php
+++ b/phpBB/phpbb/controller/helper.php
@@ -147,7 +147,7 @@ class helper
 		}
 		else
 		{
-			$base_url .= preg_replace('#^(?:(\.))+(?:(.+)?)+(?:([\\/\\\])$)#', '$2', $this->phpbb_root_path);
+			$base_url .= preg_replace(get_preg_expression('path_remove_dot_trailing_slash'), '$2', $this->phpbb_root_path);
 		}
 
 		$base_url = $this->filesystem->clean_path($base_url);
diff --git a/tests/functions/get_preg_expression_test.php b/tests/functions/get_preg_expression_test.php
new file mode 100644
index 0000000000..ed0f2b5685
--- /dev/null
+++ b/tests/functions/get_preg_expression_test.php
@@ -0,0 +1,38 @@
+<?php
+/**
+*
+* This file is part of the phpBB Forum Software package.
+*
+* @copyright (c) phpBB Limited <https://www.phpbb.com>
+* @license GNU General Public License, version 2 (GPL-2.0)
+*
+* For full copyright and license information, please see
+* the docs/CREDITS.txt file.
+*
+*/
+
+require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
+
+class phpbb_functions_get_preg_expression_test extends phpbb_test_case
+{
+	public function data_path_remove_dot_trailing_slash()
+	{
+		return array(
+			array('/..', '$2', './../'),
+			array('/..', '$2', '/../'),
+			array('', '$2', ''),
+			array('', '$2', './'),
+			array('', '$2', '/'),
+			array('/../..', '$2', './../../'),
+			array('/../..', '$2', '/../../'),
+		);
+	}
+
+	/**
+	 * @dataProvider data_path_remove_dot_trailing_slash
+	 */
+	public function test_path_remove_dot_trailing_slash($expected, $replace, $input)
+	{
+		$this->assertSame($expected, preg_replace(get_preg_expression('path_remove_dot_trailing_slash'), $replace, $input));
+	}
+}