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;
}