From 999339635fe9d47cc19618aa33bc40957a07f40c Mon Sep 17 00:00:00 2001 From: Paul Hatcherian <1835615+PaulHatch@users.noreply.github.com> Date: Tue, 27 Dec 2022 21:34:15 -0600 Subject: [PATCH] Escpae prefix and namespace when creating regex --- src/formatting/DefaultTagFormatter.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/formatting/DefaultTagFormatter.ts b/src/formatting/DefaultTagFormatter.ts index 5b8d295..033c540 100644 --- a/src/formatting/DefaultTagFormatter.ts +++ b/src/formatting/DefaultTagFormatter.ts @@ -61,12 +61,16 @@ export class DefaultTagFormatter implements TagFormatter { return [major, minor, patch]; }; - public IsValid(tag: string): boolean { + public IsValid(tag: string): boolean { + const regexEscape = (literal: string) => literal.replace(/\W/g, '\\$&'); + const tagPrefix = regexEscape(this.tagPrefix); + const namespaceSeperator = regexEscape(this.namespaceSeperator); + const namespace = regexEscape(this.namespace); + if (!!this.namespace) { - return new RegExp(`^${this.tagPrefix}[0-9]+\.[0-9]+\.[0-9]+${this.namespaceSeperator}${this.namespace}$`).test(tag); + return new RegExp(`^${tagPrefix}[0-9]+\.[0-9]+\.[0-9]+${namespaceSeperator}${namespace}$`).test(tag); } - return new RegExp(`^${this.tagPrefix}[0-9]+\.[0-9]+\.[0-9]+$`).test(tag); + return new RegExp(`^${tagPrefix}[0-9]+\.[0-9]+\.[0-9]+$`).test(tag); } - }