首页 > 解决方案 > 在没有“https”或“www”的情况下如何隔离URL的域名?

问题描述

因此,我一直在隔离 URL 的域名:

return new URL(myUrl).hostname.replace(/^(?:https?:\/\/)?(?:www\.)?/i, '')

但是,缺少“https”或“www”(例如:)的 URLbla.blablabla.blabla.com/something/?id=616&md=3&no=A4会触发此错误消息:

“未能构建‘URL’”

我怎样才能容纳这样的 URL 并仍然将域名与它们隔离开来?

标签: javascript

解决方案


首先检查url字符串,例如它是否包含"https" or "http"协议,如果它不包含,则在您的 url 字符串中添加“https”协议的前缀。要检查协议,您可以使用RegExp.test()正则表达式的方法。

const validUrl = "https://www.google.com"
const invalidUrl = "bla.blablabla.blabla.com/something/?id=616&md=3&no=A4";

const getFormattedHost = (urlStr) => {
  const regex = /^(?:https?:\/\/)?(?:www\.)?/i;
  const isValid = /^https?:\/\//.test(urlStr);
  let finalUrl = !isValid ? `https://${urlStr}` : urlStr;
  return new URL(finalUrl).hostname.replace(regex, "");
}

console.log(getFormattedHost(validUrl));
console.log(getFormattedHost(invalidUrl));


推荐阅读