~cytrogen/masto-fe

ref: bc69d48652e431b06a1fff2c3fd0a67b54d23f81 masto-fe/app/javascript/flavours/glitch/features/compose/util/url_regex.js -rw-r--r-- 1.3 KiB
bc69d486 — Cytrogen Cherry-pick PR #104: Reduced motion accessibility a month ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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",
);