UNPKG

@boomerang-io/carbon-addons-boomerang-react

Version:
43 lines (41 loc) 1.01 kB
/* IBM Confidential 694970X, 69497O0 © Copyright IBM Corp. 2022, 2024 */ /* eslint-disable */ /** * https://github.com/segmentio/is-url */ /** * RegExps. * A URL must match #1 and then at least one of #2/#3. * Use two levels of REs to avoid REDOS. */ const protocolAndDomainRE = /^(?:\w+:)?\/\/(\S+)$/; const localhostDomainRE = /^localhost[\:?\d]*(?:[^\:?\d]\S*)?$/; const nonLocalhostDomainRE = /^[^\s\.]+\.\S{2,}$/; /** * Loosely validate a URL `string`. * * @param {String} string * @return {Boolean} */ function isUrl(string) { if (typeof string !== "string") { return false; } const match = string.match(protocolAndDomainRE); if (!match) { return false; } const everythingAfterProtocol = match[1]; if (!everythingAfterProtocol) { return false; } if (localhostDomainRE.test(everythingAfterProtocol) || nonLocalhostDomainRE.test(everythingAfterProtocol)) { return true; } return false; } export { isUrl as default };