diff --git a/lib/util/regex.ts b/lib/util/regex.ts index ac956bf18ce45b..fe3479c444b21a 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(); + 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();