diff --git a/http/utility.hpp b/http/utility.hpp
index 873cfe4..37c06cd 100644
--- a/http/utility.hpp
+++ b/http/utility.hpp
@@ -11,6 +11,7 @@
 #include <ctime>
 #include <functional>
 #include <limits>
+#include <regex>
 #include <stdexcept>
 #include <string>
 #include <string_view>
@@ -692,5 +693,50 @@
     return details::urlFromPiecesDetail({args...});
 }
 
+inline bool validateAndSplitUrl(std::string_view destUrl, std::string& urlProto,
+                                std::string& host, std::string& port,
+                                std::string& path)
+{
+    // Validate URL using regex expression
+    // Format: <protocol>://<host>:<port>/<path>
+    // protocol: http/https
+    const std::regex urlRegex(
+        "(http|https)://([^/\\x20\\x3f\\x23\\x3a]+):?([0-9]*)(/"
+        "([^\\x20\\x23\\x3f]*\\x3f?([^\\x20\\x23\\x3f])*)?)");
+    std::cmatch match;
+    if (!std::regex_match(destUrl.begin(), destUrl.end(), match, urlRegex))
+    {
+        return false;
+    }
+
+    urlProto = std::string(match[1].first, match[1].second);
+    if (urlProto == "http")
+    {
+#ifndef BMCWEB_INSECURE_ENABLE_HTTP_PUSH_STYLE_EVENTING
+        return false;
+#endif
+    }
+
+    host = std::string(match[2].first, match[2].second);
+    port = std::string(match[3].first, match[3].second);
+    path = std::string(match[4].first, match[4].second);
+    if (port.empty())
+    {
+        if (urlProto == "http")
+        {
+            port = "80";
+        }
+        else
+        {
+            port = "443";
+        }
+    }
+    if (path.empty())
+    {
+        path = "/";
+    }
+    return true;
+}
+
 } // namespace utility
 } // namespace crow
