diff --git a/lib/modules/manager/gitlabci/__fixtures__/gitlab-ci.reference.yaml b/lib/modules/manager/gitlabci/__fixtures__/gitlab-ci.reference.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..3ceebb977822db891dbe01a425f8ad14075ae4b4
--- /dev/null
+++ b/lib/modules/manager/gitlabci/__fixtures__/gitlab-ci.reference.yaml
@@ -0,0 +1,11 @@
+test:
+  script:
+    - !reference [.setup, script]
+    - !reference [arbitrary job name with space and no starting dot, nested1, nested2, nested3]
+    - !reference [
+      .multiline,
+      reference,
+    ]
+    - !reference [
+        .another, multilineref
+      ]
diff --git a/lib/modules/manager/gitlabci/utils.spec.ts b/lib/modules/manager/gitlabci/utils.spec.ts
index f68e1511919857727128c3a6382a5b2cf0ea3902..a52b8927c4789706abfa2346a0d7258f8b7dcd2c 100644
--- a/lib/modules/manager/gitlabci/utils.spec.ts
+++ b/lib/modules/manager/gitlabci/utils.spec.ts
@@ -1,5 +1,6 @@
+import { Fixtures } from '../../../../test/fixtures';
 import type { PackageDependency } from '../types';
-import { getGitlabDep } from './utils';
+import { getGitlabDep, replaceReferenceTags } from './utils';
 
 describe('modules/manager/gitlabci/utils', () => {
   describe('getGitlabDep', () => {
@@ -81,4 +82,12 @@ describe('modules/manager/gitlabci/utils', () => {
       });
     });
   });
+
+  describe('replaceReferenceTags', () => {
+    it('replaces all !reference tags with empty strings', () => {
+      const yamlFileReferenceConfig = Fixtures.get('gitlab-ci.reference.yaml');
+      const replaced = replaceReferenceTags(yamlFileReferenceConfig);
+      expect(replaced).not.toContain('!reference');
+    });
+  });
 });
diff --git a/lib/modules/manager/gitlabci/utils.ts b/lib/modules/manager/gitlabci/utils.ts
index 15f094742b12826160784d9e680b72393364b5eb..13904a8d32db2f2e68cd5331bfac79938e019b42 100644
--- a/lib/modules/manager/gitlabci/utils.ts
+++ b/lib/modules/manager/gitlabci/utils.ts
@@ -2,7 +2,7 @@ import { regEx } from '../../../util/regex';
 import { getDep } from '../dockerfile/extract';
 import type { PackageDependency } from '../types';
 
-const re = /!reference \[(.*?)\]/g;
+const re = /!reference \[[^\]]+\]/g;
 
 /**
  * Replaces GitLab reference tags before parsing, because our yaml parser cannot process them anyway.