30 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import regexSupplant from 'twitter-text/dist/lib/regexSupplant';
 | 
						|
import validUrlPrecedingChars from 'twitter-text/dist/regexp/validUrlPrecedingChars';
 | 
						|
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 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',
 | 
						|
);
 |