12345678910111213141516171819202122 |
- 'use strict';
- var ipRegex = require('ip-regex');
-
- module.exports = function (opts) {
- opts = opts || {};
-
- var protocol = '(?:(?:[a-z]+:)?//)';
- var auth = '(?:\\S+(?::\\S*)?@)?';
- var ip = ipRegex.v4().source;
- var host = '(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)';
- var domain = '(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*';
- var tld = '(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))';
- var port = '(?::\\d{2,5})?';
- var path = '(?:[/?#][^\\s"]*)?';
- var regex = [
- '(?:' + protocol + '|www\\.)' + auth, '(?:localhost|' + ip + '|' + host + domain + tld + ')',
- port, path
- ].join('');
-
- return opts.exact ? new RegExp('(?:^' + regex + '$)', 'i') :
- new RegExp(regex, 'ig');
- };
|