Files
2025-10-12 13:42:02 +02:00

31 lines
1.3 KiB
JavaScript

import regexSupplant from "twitter-text/dist/lib/regexSupplant";
import validDomain from "twitter-text/dist/regexp/validDomain";
import validPortNumber from "twitter-text/dist/regexp/validPortNumber";
import validUrlPath from "twitter-text/dist/regexp/validUrlPath";
import validUrlPrecedingChars from "twitter-text/dist/regexp/validUrlPrecedingChars";
import validUrlQueryChars from "twitter-text/dist/regexp/validUrlQueryChars";
import validUrlQueryEndingChars from "twitter-text/dist/regexp/validUrlQueryEndingChars";
// The difference with twitter-text's extractURL is that the protocol isn't
// optional.
export const urlRegex = regexSupplant(
"(" + // $1 URL
"(#{validUrlPrecedingChars})" + // $2
"(https?:\\/\\/)" + // $3 Protocol
"(#{validDomain})" + // $4 Domain(s)
"(?::(#{validPortNumber}))?" + // $5 Port number (optional)
"(\\/#{validUrlPath}*)?" + // $6 URL Path
"(\\?#{validUrlQueryChars}*#{validUrlQueryEndingChars})?" + // $7 Query String
")",
{
validUrlPrecedingChars,
validDomain,
validPortNumber,
validUrlPath,
validUrlQueryChars,
validUrlQueryEndingChars,
},
"gi",
);