diff --git a/bin/main.cpp b/bin/main.cpp index 21f64db..014d295 100644 --- a/bin/main.cpp +++ b/bin/main.cpp @@ -19,6 +19,7 @@ #include "security/validate_email.hpp" #include "security/uuid.hpp" #include "security/is_string.hpp" +#include "security/is_link.hpp" // for example int f(int a) @@ -298,4 +299,14 @@ int main(int argc, char *argv[]) query = hack::utils::make_query("super_function", 1, 123.3f, js); hack::log()("query", query); } + + {// ex: is link + std::string link { "https://google.com" }; + if (hack::security::is_link(link)) + hack::log()("is link"); + + link = "https//google.com"; + if (!hack::security::is_link(link)) + hack::error()("no link"); + } } diff --git a/src/security/is_link.hpp b/src/security/is_link.hpp new file mode 100644 index 0000000..2dc045f --- /dev/null +++ b/src/security/is_link.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include +#include +#include + +namespace hack::security +{ + inline bool is_link(const std::string& s) + { + static const std::regex e("^(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?$", std::regex_constants::icase); + return std::regex_match (s, e); + } +}