diff --git a/public/scripts/extensions/regex/editor.html b/public/scripts/extensions/regex/editor.html
index 7c81ed717..dbf7b553a 100644
--- a/public/scripts/extensions/regex/editor.html
+++ b/public/scripts/extensions/regex/editor.html
@@ -8,7 +8,7 @@
Script Name
-
+
+
diff --git a/public/scripts/extensions/regex/engine.js b/public/scripts/extensions/regex/engine.js
index 74c197fa6..e2296f610 100644
--- a/public/scripts/extensions/regex/engine.js
+++ b/public/scripts/extensions/regex/engine.js
@@ -30,9 +30,19 @@ function runRegexScript(regexScript, rawString) {
const fencedMatch = match[0];
const capturedMatch = match[1];
+ let trimCapturedMatch;
+ let trimFencedMatch;
+ if (capturedMatch) {
+ const tempTrimCapture = filterString(capturedMatch, regexScript.trimStrings);
+ trimFencedMatch = fencedMatch.replaceAll(capturedMatch, tempTrimCapture);
+ trimCapturedMatch = tempTrimCapture;
+ } else {
+ trimFencedMatch = filterString(fencedMatch, regexScript.trimStrings);
+ }
+
// TODO: Use substrings for replacement. But not necessary at this time.
// A substring is from match.index to match.index + match[0].length or fencedMatch.length
- const subReplaceString = substituteRegexParams(regexScript.replaceString, { regexMatch: capturedMatch ?? fencedMatch });
+ const subReplaceString = substituteRegexParams(regexScript.replaceString, trimCapturedMatch ?? trimFencedMatch);
if (!newString) {
newString = rawString.replace(fencedMatch, subReplaceString);
} else {
@@ -48,8 +58,19 @@ function runRegexScript(regexScript, rawString) {
return newString;
}
-// Substitutes parameters
-function substituteRegexParams(rawString, { regexMatch }) {
+// Filters anything to trim from the regex match
+function filterString(rawString, trimStrings) {
+ let finalString = rawString;
+ trimStrings.forEach((trimString) => {
+ const subTrimString = substituteParams(trimString);
+ finalString = finalString.replaceAll(subTrimString, "");
+ });
+
+ return finalString;
+}
+
+// Substitutes regex-specific and normal parameters
+function substituteRegexParams(rawString, regexMatch) {
let finalString = rawString;
finalString = finalString.replace("{{match}}", regexMatch);
finalString = substituteParams(finalString);
diff --git a/public/scripts/extensions/regex/index.js b/public/scripts/extensions/regex/index.js
index 24317e025..e7bb56b11 100644
--- a/public/scripts/extensions/regex/index.js
+++ b/public/scripts/extensions/regex/index.js
@@ -87,9 +87,10 @@ async function onRegexEditorOpenClick(existingId) {
editorHtml.find(`.regex_script_name`).val(existingScript.scriptName);
editorHtml.find(`.find_regex`).val(existingScript.findRegex);
editorHtml.find(`.regex_replace_string`).val(existingScript.replaceString);
+ editorHtml.find(`.regex_trim_strings`).val(existingScript.trimStrings?.join("\n") || []);
editorHtml
.find(`input[name="disabled"]`)
- .prop("checked", existingScript.disabled);
+ .prop("checked", existingScript.disabled ?? false);
editorHtml
.find(`input[name="run_on_edit"]`)
.prop("checked", existingScript.runOnEdit);
@@ -116,13 +117,14 @@ async function onRegexEditorOpenClick(existingId) {
scriptName: editorHtml.find(".regex_script_name").val(),
findRegex: editorHtml.find(".find_regex").val(),
replaceString: editorHtml.find(".regex_replace_string").val(),
+ trimStrings: editorHtml.find(".regex_trim_strings").val().split("\n").filter((e) => e.length !== 0) || [],
placement:
editorHtml
.find(`input[name="replace_position"]`)
.filter(":checked")
.map(function() { return parseInt($(this).val()) })
.get()
- .filter((e) => e !== NaN) ?? [],
+ .filter((e) => e !== NaN) || [],
disabled:
editorHtml
.find(`input[name="disabled"]`)