From 8b3b265d870f0fb44286521e6b64bbe2c7d754c6 Mon Sep 17 00:00:00 2001
From: Grim <69561145+LinkIsGrim@users.noreply.github.com>
Date: Wed, 30 Aug 2023 19:31:10 -0400
Subject: [PATCH] Common - Add `FUNC(escapeRegex)` (#9355)

* add function

* add source
---
 addons/common/XEH_PREP.hpp                  |  1 +
 addons/common/functions/fnc_escapeRegex.sqf | 20 ++++++++++++++++++++
 2 files changed, 21 insertions(+)
 create mode 100644 addons/common/functions/fnc_escapeRegex.sqf

diff --git a/addons/common/XEH_PREP.hpp b/addons/common/XEH_PREP.hpp
index d016ab26d6..9da48c3993 100644
--- a/addons/common/XEH_PREP.hpp
+++ b/addons/common/XEH_PREP.hpp
@@ -51,6 +51,7 @@ PREP(dropBackpack);
 PREP(endRadioTransmission);
 PREP(eraseCache);
 PREP(errorMessage);
+PREP(escapeRegex);
 PREP(findUnloadPosition);
 PREP(firedEH);
 PREP(fixCollision);
diff --git a/addons/common/functions/fnc_escapeRegex.sqf b/addons/common/functions/fnc_escapeRegex.sqf
new file mode 100644
index 0000000000..adaa8bb557
--- /dev/null
+++ b/addons/common/functions/fnc_escapeRegex.sqf
@@ -0,0 +1,20 @@
+#include "script_component.hpp"
+/*
+ * Author: LinkIsGrim
+ * Escapes special characters used in regex from a string
+ *
+ * Arguments:
+ * 0: String <STRING>
+ *
+ * Return Value:
+ * Safe string <STRING>
+ *
+ * Example:
+ * "\Q.*?AK-15.*?\E" call ace_common_fnc_escapeRegex
+ *
+ * Public: Yes
+ */
+params [["_string", "", [""]]];
+
+// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping
+_string regexReplace ["[.?*+^$[\]\\(){}|-]/gio", "\\$&"]