diff --git a/lib/modules/datasource/postprocess-release.spec.ts b/lib/modules/datasource/postprocess-release.spec.ts
index 3ec6de9abd8e99781d08d2cd935ba0b53294bacf..a8cacb3d92378e86f94146de89296af2817b92c2 100644
--- a/lib/modules/datasource/postprocess-release.spec.ts
+++ b/lib/modules/datasource/postprocess-release.spec.ts
@@ -124,6 +124,31 @@ describe('modules/datasource/postprocess-release', () => {
     expect(release).toBeNull();
   });
 
+  it('preserves rejected release when `extractVersion` was set', async () => {
+    const releaseOrig: Release = { version: '1.2.3' };
+
+    class SomeDatasource extends DummyDatasource {
+      override postprocessRelease(
+        _config: PostprocessReleaseConfig,
+        _release: Release,
+      ): Promise<PostprocessReleaseResult> {
+        return Promise.resolve('reject');
+      }
+    }
+    getDatasourceFor.mockReturnValueOnce(new SomeDatasource());
+
+    const release = await postprocessRelease(
+      {
+        datasource: 'some-datasource',
+        packageName: 'some-package',
+        extractVersion: '^(?<version>\\d+)$',
+      },
+      releaseOrig,
+    );
+
+    expect(release).toBe(releaseOrig);
+  });
+
   it('falls back when error was thrown', async () => {
     const releaseOrig: Release = { version: '1.2.3' };
 
diff --git a/lib/modules/datasource/postprocess-release.ts b/lib/modules/datasource/postprocess-release.ts
index ef4a34131fe46e1bc834365ffa87145002b944c2..b2ba55624557d86368fa21e0bd2672154a6632f6 100644
--- a/lib/modules/datasource/postprocess-release.ts
+++ b/lib/modules/datasource/postprocess-release.ts
@@ -49,6 +49,20 @@ export async function postprocessRelease(
     );
 
     if (result === 'reject') {
+      if (config.extractVersion) {
+        logger.debug(
+          {
+            datasource,
+            packageName,
+            registryUrl,
+            version: release.version,
+            extractVersion: config.extractVersion,
+          },
+          'Rejected release combined with `extractVersion`: preserving the release',
+        );
+        return release;
+      }
+
       logger.debug(
         { datasource, packageName, registryUrl, version: release.version },
         'Rejected release',