diff options
Diffstat (limited to 'node_modules/is-url/index.js')
| -rw-r--r-- | node_modules/is-url/index.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/node_modules/is-url/index.js b/node_modules/is-url/index.js new file mode 100644 index 0000000..3ea3d20 --- /dev/null +++ b/node_modules/is-url/index.js @@ -0,0 +1,47 @@ + +/** + * Expose `isUrl`. + */ + +module.exports = isUrl; + +/** + * RegExps. + * A URL must match #1 and then at least one of #2/#3. + * Use two levels of REs to avoid REDOS. + */ + +var protocolAndDomainRE = /^(?:\w+:)?\/\/(\S+)$/; + +var localhostDomainRE = /^localhost[\:?\d]*(?:[^\:?\d]\S*)?$/ +var nonLocalhostDomainRE = /^[^\s\.]+\.\S{2,}$/; + +/** + * Loosely validate a URL `string`. + * + * @param {String} string + * @return {Boolean} + */ + +function isUrl(string){ + if (typeof string !== 'string') { + return false; + } + + var match = string.match(protocolAndDomainRE); + if (!match) { + return false; + } + + var everythingAfterProtocol = match[1]; + if (!everythingAfterProtocol) { + return false; + } + + if (localhostDomainRE.test(everythingAfterProtocol) || + nonLocalhostDomainRE.test(everythingAfterProtocol)) { + return true; + } + + return false; +} |