diff --git a/lib/util/regex.ts b/lib/util/regex.ts
index ac956bf18ce45bf21f6973c6423eaa786544881b..fe3479c444b21a31357cf9ca93584c8498df2d35 100644
--- a/lib/util/regex.ts
+++ b/lib/util/regex.ts
@@ -5,6 +5,8 @@ import { logger } from '../logger';
 
 let RegEx: RegExpConstructor;
 
+const cache = new Map<string, RegExp>();
+
 try {
   // eslint-disable-next-line
   const RE2 = require('re2');
@@ -18,8 +20,16 @@ try {
 }
 
 export function regEx(pattern: string | RegExp, flags?: string): RegExp {
+  const key = `${pattern.toString()}:${flags}`;
+
+  if (cache.has(key)) {
+    return cache.get(key);
+  }
+
   try {
-    return new RegEx(pattern, flags);
+    const instance = new RegEx(pattern, flags);
+    cache.set(key, instance);
+    return instance;
   } catch (err) {
     const error = new Error(CONFIG_VALIDATION);
     error.validationSource = pattern.toString();