javascript - 在没有“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 并仍然将域名与它们隔离开来?
解决方案
首先检查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));
推荐阅读
- firebase - 如何使用正确的参数调用 gapi.client.firebase.projects.iosApp.create?
- java - java.lang.ClassCastException:java.io.ObjectStreamClass 无法转换为 [MyClass]
- javascript - 为什么我需要 setTimeout 来更新 React 组件中的状态
- spring-boot - 如何根据输入字段将json数据流发送到kafka中的多个主题
- python - 使用 pyinstaller 后 Tkinter 更新标签
- r - 如何在r中的单行中获取条件的结果
- c# - 在 DLL 'CIMWin32.dll' 中找不到名为“Reset”的入口点
- c++ - 更少的恒定时间迭代需要更多时间 - c++ 编译器依赖性?
- javascript - 每次我调用函数时防止声明空数组
- elasticsearch - Elasticsearch:仅搜索单词形式