diff --git a/inject.js b/inject.js index 4fa5fedc..a35f6127 100644 --- a/inject.js +++ b/inject.js @@ -1,4 +1,5 @@ var regStrip = /^[\r\t\f\v ]+|[\r\t\f\v ]+$/gm; +var regEndsWithFlags = /\/(?!.*(.).*\1)[gimsuy]*$/; var tc = { settings: { @@ -393,7 +394,17 @@ function isBlacklisted() { if (match.startsWith("/")) { try { - var regexp = new RegExp(match); + var parts = match.split("/"); + + if (regEndsWithFlags.test(match)) { + var flags = parts.pop(); + var regex = parts.slice(1).join("/"); + } else { + var flags = ""; + var regex = match; + } + + var regexp = new RegExp(regex, flags); } catch (err) { return; } diff --git a/options.html b/options.html index d041e199..e6e0124c 100644 --- a/options.html +++ b/options.html @@ -167,7 +167,7 @@

Other


Regex is supported.
- Be sure it is in "//g" format.
+ Be sure to use the literal notation.
ie: /(.+)youtube\.com(\/*)$/gi
diff --git a/options.js b/options.js index bd91b831..18dd3a88 100644 --- a/options.js +++ b/options.js @@ -180,22 +180,30 @@ function createKeyBindings(item) { function validate() { var valid = true; var status = document.getElementById("status"); - document - .getElementById("blacklist") - .value.split("\n") - .forEach((match) => { - match = match.replace(regStrip, ""); - if (match.startsWith("/")) { - try { - var regexp = new RegExp(match); - } catch (err) { - status.textContent = - "Error: Invalid blacklist regex: " + match + ". Unable to save"; - valid = false; - return; - } + var blacklist = document.getElementById("blacklist"); + + blacklist.value.split("\n").forEach((match) => { + match = match.replace(regStrip, ""); + + if (match.startsWith("/")) { + try { + var parts = match.split("/"); + + if (parts.length < 3) + throw "invalid regex"; + + var flags = parts.pop(); + var regex = parts.slice(1).join("/"); + + var regexp = new RegExp(regex, flags); + } catch (err) { + status.textContent = + "Error: Invalid blacklist regex: \"" + match + "\". Unable to save. Try wrapping it in foward slashes."; + valid = false; + return; } - }); + } + }); return valid; }