diff --git a/CHANGELOG.md b/CHANGELOG.md
index 01663533a..7de682090 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,10 @@
## [next]
+### Fixed
+
+- Fixed regexp escaping for auto-populated silence matchers #3936.
+
### Changed
- Upgraded [Font Awesome](https://fontawesome.com/) icons to 6.0
diff --git a/ui/src/Components/SilenceModal/SilenceForm.test.tsx b/ui/src/Components/SilenceModal/SilenceForm.test.tsx
index 8935dba7a..f8fad7eae 100644
--- a/ui/src/Components/SilenceModal/SilenceForm.test.tsx
+++ b/ui/src/Components/SilenceModal/SilenceForm.test.tsx
@@ -110,7 +110,7 @@ describe(" matchers", () => {
{
label: "alertnameEqual",
value: "alertnameEqual",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -123,7 +123,7 @@ describe(" matchers", () => {
{
label: "alertnameNotEqual",
value: "alertnameNotEqual",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -136,7 +136,7 @@ describe(" matchers", () => {
{
label: ".*alertnameRegex.*",
value: ".*alertnameRegex.*",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -149,7 +149,7 @@ describe(" matchers", () => {
{
label: ".*alertnameNegativeRegex.*",
value: ".*alertnameNegativeRegex.*",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -162,7 +162,7 @@ describe(" matchers", () => {
{
label: "clusterEqual",
value: "clusterEqual",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -175,7 +175,7 @@ describe(" matchers", () => {
{
label: "clusterNotEqual",
value: "clusterNotEqual",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -188,7 +188,7 @@ describe(" matchers", () => {
{
label: ".*clusterRegex.*",
value: ".*clusterRegex.*",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -201,7 +201,7 @@ describe(" matchers", () => {
{
label: ".*clusterNegativeRegex.*",
value: ".*clusterNegativeRegex.*",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -214,7 +214,7 @@ describe(" matchers", () => {
{
label: "fooEqual",
value: "fooEqual",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -227,7 +227,7 @@ describe(" matchers", () => {
{
label: "fooNotEqual",
value: "fooNotEqual",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -240,7 +240,7 @@ describe(" matchers", () => {
{
label: ".*fooRegex.*",
value: ".*fooRegex.*",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -253,7 +253,7 @@ describe(" matchers", () => {
{
label: ".*fooNegativeRegex.*",
value: ".*fooNegativeRegex.*",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -300,7 +300,7 @@ describe(" matchers", () => {
{
label: "alertnameEqual",
value: "alertnameEqual",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -313,7 +313,7 @@ describe(" matchers", () => {
{
label: "alertnameNotEqual",
value: "alertnameNotEqual",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -326,7 +326,7 @@ describe(" matchers", () => {
{
label: ".*alertnameRegex.*",
value: ".*alertnameRegex.*",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -339,7 +339,7 @@ describe(" matchers", () => {
{
label: ".*alertnameNegativeRegex.*",
value: ".*alertnameNegativeRegex.*",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -352,7 +352,7 @@ describe(" matchers", () => {
{
label: "clusterEqual",
value: "clusterEqual",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -365,7 +365,7 @@ describe(" matchers", () => {
{
label: "clusterNotEqual",
value: "clusterNotEqual",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -378,7 +378,7 @@ describe(" matchers", () => {
{
label: ".*clusterRegex.*",
value: ".*clusterRegex.*",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -391,7 +391,7 @@ describe(" matchers", () => {
{
label: ".*clusterNegativeRegex.*",
value: ".*clusterNegativeRegex.*",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -404,7 +404,7 @@ describe(" matchers", () => {
{
label: "fooEqual",
value: "fooEqual",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -417,7 +417,7 @@ describe(" matchers", () => {
{
label: "fooNotEqual",
value: "fooNotEqual",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -430,7 +430,7 @@ describe(" matchers", () => {
{
label: ".*fooRegex.*",
value: ".*fooRegex.*",
- wasCreated: false,
+ wasCreated: true,
},
],
},
@@ -443,7 +443,7 @@ describe(" matchers", () => {
{
label: ".*fooNegativeRegex.*",
value: ".*fooNegativeRegex.*",
- wasCreated: false,
+ wasCreated: true,
},
],
},
diff --git a/ui/src/Components/SilenceModal/SilenceForm.tsx b/ui/src/Components/SilenceModal/SilenceForm.tsx
index a6b599d25..2cc0f86ae 100644
--- a/ui/src/Components/SilenceModal/SilenceForm.tsx
+++ b/ui/src/Components/SilenceModal/SilenceForm.tsx
@@ -123,11 +123,15 @@ const SilenceForm: FC<{
f.matcher === QueryOperators.Regex ||
f.matcher === QueryOperators.NegativeRegex
) {
- matcher.values = [StringToOption(`.*${f.value}.*`)];
+ matcher.values = [
+ { ...StringToOption(`.*${f.value}.*`), wasCreated: true },
+ ];
matcher.isRegex = true;
matcher.isEqual = f.matcher === QueryOperators.Regex;
} else {
- matcher.values = [StringToOption(f.value)];
+ matcher.values = [
+ { ...StringToOption(f.value), wasCreated: true },
+ ];
matcher.isEqual = f.matcher === QueryOperators.Equal;
}
silenceFormStore.data.addMatcherWithID(matcher);