You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

31 lines
1.3 KiB

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',
);