Index: lib/filterClasses.js |
=================================================================== |
--- a/lib/filterClasses.js |
+++ b/lib/filterClasses.js |
@@ -82,17 +82,17 @@ |
* @type {Map.<string,Filter>} |
*/ |
Filter.knownFilters = new Map(); |
/** |
* Regular expression that element hiding filters should match |
* @type {RegExp} |
*/ |
-Filter.elemhideRegExp = /^([^/*|@"!]*?)#([@?])?#(.+)$/; |
+Filter.elemhideRegExp = /^([^/*|@"!?]*?)#([@?])?#(.+)$/; |
/** |
* Regular expression that RegExp filters specified as RegExps should match |
* @type {RegExp} |
*/ |
Filter.regexpRegExp = /^(@@)?\/.*\/(?:\$~?[\w-]+(?:=[^,\s]+)?(?:,~?[\w-]+(?:=[^,\s]+)?)*)?$/; |
/** |
* Regular expression that options on a RegExp filter should match |
* @type {RegExp} |
@@ -183,17 +183,17 @@ |
// Don't remove spaces inside comments |
if (/^ *!/.test(text)) |
return text.trim(); |
// Special treatment for element hiding filters, right side is allowed to |
// contain spaces |
if (Filter.elemhideRegExp.test(text)) |
{ |
- let [, domain, separator, selector] = /^(.*?)(#@?#?)(.*)$/.exec(text); |
+ let [, domain, separator, selector] = /^(.*?)(#[@?]?#?)(.*)$/.exec(text); |
return domain.replace(/ +/g, "") + separator + selector.trim(); |
} |
// For most regexp filters we strip all spaces, but $csp filter options |
// are allowed to contain single (non trailing) spaces. |
let strippedText = text.replace(/ +/g, ""); |
if (!strippedText.includes("$") || !/\bcsp=/i.test(strippedText)) |
return strippedText; |