From 6111985b77b55ccc30c29da42561acb30a53a57c Mon Sep 17 00:00:00 2001 From: fourtf Date: Thu, 26 Dec 2019 22:00:31 +0100 Subject: [PATCH] replaced link regex --- src/common/LinkParser.cpp | 45 ++++----------------------------------- 1 file changed, 4 insertions(+), 41 deletions(-) diff --git a/src/common/LinkParser.cpp b/src/common/LinkParser.cpp index a80c75641..78a0e80c5 100644 --- a/src/common/LinkParser.cpp +++ b/src/common/LinkParser.cpp @@ -5,51 +5,14 @@ #include #include -// ip 0.0.0.0 - 224.0.0.0 -#define IP \ - "(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])" \ - "(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}" \ - "(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))" -#define PORT "(?::\\d{2,5})" -#define WEB_CHAR1 "[_a-z\\x{00a1}-\\x{ffff}0-9]" -#define WEB_CHAR2 "[a-z\\x{00a1}-\\x{ffff}0-9]" - -#define SPOTIFY_1 "(?:artist|album|track|user:[^:]+:playlist):[a-zA-Z0-9]+" -#define SPOTIFY_2 "user:[^:]+" -#define SPOTIFY_3 "search:(?:[-\\w$\\.+!*'(),]+|%[a-fA-F0-9]{2})+" -#define SPOTIFY_PARAMS "(?:" SPOTIFY_1 "|" SPOTIFY_2 "|" SPOTIFY_3 ")" -#define SPOTIFY_LINK "(?x-mi:(spotify:" SPOTIFY_PARAMS "))" - -#define WEB_PROTOCOL "(?:(?:https?|ftps?)://)?" -#define WEB_USER "(?:\\S+(?::\\S*)?@)?" -#define WEB_HOST "(?:(?:" WEB_CHAR1 "-*)*" WEB_CHAR2 "+)" -#define WEB_DOMAIN "(?:\\.(?:" WEB_CHAR2 "-*)*" WEB_CHAR2 "+)*" -#define WEB_TLD "(?:" + tldData + ")" -#define WEB_RESOURCE_PATH "(?:[/?#]\\S*)" -#define WEB_LINK \ - WEB_PROTOCOL WEB_USER "(?:" IP "|" WEB_HOST WEB_DOMAIN "\\." WEB_TLD PORT \ - "?" WEB_RESOURCE_PATH "?)" - -#define LINK "^(?:" SPOTIFY_LINK "|" WEB_LINK ")$" - namespace chatterino { LinkParser::LinkParser(const QString &unparsedString) { - static QRegularExpression linkRegex = [] { - static QRegularExpression newLineRegex("\r?\n"); - QFile file(":/tlds.txt"); - file.open(QFile::ReadOnly); - QTextStream tlds(&file); - tlds.setCodec("UTF-8"); - - // tldData gets injected into the LINK macro - auto tldData = tlds.readAll().replace(newLineRegex, "|"); - (void)tldData; - - return QRegularExpression(LINK, - QRegularExpression::CaseInsensitiveOption); - }(); + static QRegularExpression linkRegex( + "^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/" + "?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$", + QRegularExpression::CaseInsensitiveOption); this->match_ = linkRegex.match(unparsedString); }