diff --git a/lib/manager/regex/__snapshots__/index.spec.ts.snap b/lib/manager/regex/__snapshots__/index.spec.ts.snap
index ff7398a14e99090a2aa4ed9db5735cd772b4fd91..45d0d301e8079ccc2843a2d58c09227ef0bd77c0 100644
--- a/lib/manager/regex/__snapshots__/index.spec.ts.snap
+++ b/lib/manager/regex/__snapshots__/index.spec.ts.snap
@@ -90,6 +90,7 @@ Object {
   "matchStrings": Array [
     "ENV .*?_VERSION=(?<currentValue>.*) # (?<datasource>.*?)/(?<depName>[^&]*?)(\\\\&versioning=(?<versioning>[^&]*?))?\\\\s",
   ],
+  "versioningTemplate": "{{#if versioning}}{{versioning}}{{else}}semver{{/if}}",
 }
 `;
 
@@ -117,11 +118,13 @@ Object {
     "ENV GRADLE_VERSION=(?<currentValue>.*) # (?<datasource>.*?)/(?<depName>.*?)(\\\\&versioning=(?<versioning>.*?))?\\\\s",
     "ENV NODE_VERSION=(?<currentValue>.*) # (?<datasource>.*?)/(?<depName>.*?)(\\\\&versioning=(?<versioning>.*?))?\\\\s",
   ],
+  "versioningTemplate": "{{#if versioning}}{{versioning}}{{else}}semver{{/if}}",
 }
 `;
 
 exports[`manager/regex/index extracts registryUrl 1`] = `
 Object {
+  "datasourceTemplate": "helm",
   "deps": Array [
     Object {
       "currentValue": "8.12.13",
@@ -149,6 +152,7 @@ Object {
 
 exports[`manager/regex/index extracts with combination strategy 1`] = `
 Object {
+  "datasourceTemplate": "docker",
   "deps": Array [
     Object {
       "currentValue": "v2.21.0",
@@ -167,6 +171,7 @@ Object {
 
 exports[`manager/regex/index extracts with combination strategy and multiple matches 1`] = `
 Object {
+  "datasourceTemplate": "docker",
   "deps": Array [
     Object {
       "currentValue": "0.12.0",
diff --git a/lib/manager/regex/index.ts b/lib/manager/regex/index.ts
index 43f2ad273f075cff396c8dae8c3321217d1b0b44..daf180ff29e336b9450edfa7ee763179a5dc004d 100644
--- a/lib/manager/regex/index.ts
+++ b/lib/manager/regex/index.ts
@@ -139,7 +139,7 @@ export function extractPackageFile(
   packageFile: string,
   config: CustomExtractConfig
 ): Result<PackageFile | null> {
-  let deps;
+  let deps: PackageDependency[];
   switch (config.matchStringsStrategy) {
     default:
     case 'any':
@@ -156,17 +156,17 @@ export function extractPackageFile(
   // filter all null values
   deps = deps.filter(Boolean);
   if (deps.length) {
+    const res: PackageFile = { deps, matchStrings: config.matchStrings };
     if (config.matchStringsStrategy) {
-      return {
-        deps,
-        matchStrings: config.matchStrings,
-        matchStringsStrategy: config.matchStringsStrategy,
-      };
+      res.matchStringsStrategy = config.matchStringsStrategy;
     }
-    return {
-      deps,
-      matchStrings: config.matchStrings,
-    };
+    // copy over templates for autoreplace
+    for (const field of validMatchFields.map((f) => `${f}Template`)) {
+      if (config[field]) {
+        res[field] = config[field];
+      }
+    }
+    return res;
   }
 
   return null;
diff --git a/lib/workers/branch/auto-replace.ts b/lib/workers/branch/auto-replace.ts
index 6abd5acf0c13c12b56d4502900700c39a24231aa..8aa6e17362638e8ec11667311ad5578062956997 100644
--- a/lib/workers/branch/auto-replace.ts
+++ b/lib/workers/branch/auto-replace.ts
@@ -38,7 +38,7 @@ export async function confirmIfDepUpdated(
     return false;
   }
 
-  if (newUpgrade.depName && upgrade.depName !== newUpgrade.depName) {
+  if (upgrade.depName !== newUpgrade.depName) {
     logger.debug(
       {
         manager,