From 8ed8bfb8bc03aa83fc66426688bb8b45b0478902 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Thu, 3 Mar 2016 10:49:30 +0100 Subject: [PATCH] feat(prometheus): added special regex escape for prometheus, fixes #4234 --- .../app/plugins/datasource/prometheus/datasource.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/public/app/plugins/datasource/prometheus/datasource.ts b/public/app/plugins/datasource/prometheus/datasource.ts index 69dae38e358..acfc4b876d3 100644 --- a/public/app/plugins/datasource/prometheus/datasource.ts +++ b/public/app/plugins/datasource/prometheus/datasource.ts @@ -39,13 +39,22 @@ export function PrometheusDatasource(instanceSettings, $q, backendSrv, templateS return backendSrv.datasourceRequest(options); }; + function regexEscape(value) { + return value.replace(/[\\^$*+?.()|[\]{}]/g, '\\\\$&'); + } + function interpolateQueryExpr(value, variable, defaultFormatFn) { // if no multi or include all do not regexEscape if (!variable.multi && !variable.includeAll) { return value; } - return defaultFormatFn(value, 'regex', variable); + if (typeof value === 'string') { + return regexEscape(value); + } + + var escapedValues = _.map(value, regexEscape); + return escapedValues.join('|'); }; // Called once per panel (graph)