From ff71ea58a1155ae76665dbc02cc126023f0e37b4 Mon Sep 17 00:00:00 2001 From: Mariusz Gumienny Date: Wed, 14 Apr 2021 21:06:16 +0200 Subject: [PATCH 1/3] fix include/exclude input regex --- src/js/popups/word-filter-popup.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/js/popups/word-filter-popup.js b/src/js/popups/word-filter-popup.js index 7a3c70c0f..bac2d7d10 100644 --- a/src/js/popups/word-filter-popup.js +++ b/src/js/popups/word-filter-popup.js @@ -34,11 +34,11 @@ function hide() { async function filter(language) { let filterin = $("#wordFilterPopup .wordIncludeInput").val(); filterin = filterin.trim(); - filterin = filterin.replace(/ /gi, "|"); + filterin = filterin.replace(/\s+/gi, "|"); let regincl = new RegExp(filterin, "i"); let filterout = $("#wordFilterPopup .wordExcludeInput").val(); filterout = filterout.trim(); - filterout = filterout.replace(/ /gi, "|"); + filterout = filterout.replace(/s+/gi, "|"); let regexcl = new RegExp(filterout, "i"); let filteredWords = []; let languageWordList = await Misc.getLanguage(language); From bc2b45224b7af26ef7f48bc88d334e39118519de Mon Sep 17 00:00:00 2001 From: Mariusz Gumienny Date: Wed, 14 Apr 2021 21:16:01 +0200 Subject: [PATCH 2/3] escape regexp special characters in words filter --- src/js/misc.js | 4 ++++ src/js/popups/word-filter-popup.js | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/js/misc.js b/src/js/misc.js index 4063d0dcd..db5f35119 100644 --- a/src/js/misc.js +++ b/src/js/misc.js @@ -649,6 +649,10 @@ export function remove_non_ascii(str) { return str.replace(/[^\x20-\x7E]/g, ""); } +export function escapeRegExp(str) { + return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); +} + export function cleanTypographySymbols(textToClean) { var specials = { "“": '"', // “ “ diff --git a/src/js/popups/word-filter-popup.js b/src/js/popups/word-filter-popup.js index bac2d7d10..523557fac 100644 --- a/src/js/popups/word-filter-popup.js +++ b/src/js/popups/word-filter-popup.js @@ -33,11 +33,11 @@ function hide() { async function filter(language) { let filterin = $("#wordFilterPopup .wordIncludeInput").val(); - filterin = filterin.trim(); + filterin = Misc.escapeRegExp(filterin.trim()); filterin = filterin.replace(/\s+/gi, "|"); let regincl = new RegExp(filterin, "i"); let filterout = $("#wordFilterPopup .wordExcludeInput").val(); - filterout = filterout.trim(); + filterout = Misc.escapeRegExp(filterout.trim()); filterout = filterout.replace(/s+/gi, "|"); let regexcl = new RegExp(filterout, "i"); let filteredWords = []; From a667e964a122adc68afd67eb12762c639c87699c Mon Sep 17 00:00:00 2001 From: Mariusz Gumienny Date: Wed, 14 Apr 2021 21:38:03 +0200 Subject: [PATCH 3/3] add missing backslash --- src/js/popups/word-filter-popup.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/popups/word-filter-popup.js b/src/js/popups/word-filter-popup.js index 523557fac..79cb583d6 100644 --- a/src/js/popups/word-filter-popup.js +++ b/src/js/popups/word-filter-popup.js @@ -38,7 +38,7 @@ async function filter(language) { let regincl = new RegExp(filterin, "i"); let filterout = $("#wordFilterPopup .wordExcludeInput").val(); filterout = Misc.escapeRegExp(filterout.trim()); - filterout = filterout.replace(/s+/gi, "|"); + filterout = filterout.replace(/\s+/gi, "|"); let regexcl = new RegExp(filterout, "i"); let filteredWords = []; let languageWordList = await Misc.getLanguage(language);