regex 删除URL javascript中domain和http之后的所有内容

k5hmc34c  于 2023-03-31  发布在  Java
关注(0)|答案(3)|浏览(109)

我在一个javascript变量中有完整的url,我想把它剥离成裸url。
例如:
https://www.google.com/hello/hi.phphttp://youtube.com
精简到:
www.google.com ,youtube.com
在javascript中如何做到这一点?
谢谢
这是不类似于其他链接,因为我这样做是在一个 chrome 扩展,因此,唯一的方法来获得网址是使用 chrome 扩展API只提供完整的网址。

cgh8pdjw

cgh8pdjw1#

你可以试试这个:
\/\/([^\/,\s]+\.[^\/,\s]+?)(?=\/|,|\s|$|\?|#)
Regex live here.
Live JavaScript示例:

var regex = /\/\/([^\/,\s]+\.[^\/,\s]+?)(?=\/|,|\s|$|\?|#)/g;

var input = "https://www.google.com/hello/hi.php, http://youtube.com,"
          + "http://test.net#jump or http://google.com?q=test";

while (match = regex.exec(input)) {
    document.write(match[1] + "<br/>");
};

希望能有所帮助

7lrncoxx

7lrncoxx2#

使用全局变量window.location.hostname,它将给予此信息。

ar5n3qh5

ar5n3qh53#

虽然像其他答案建议的那样使用正则表达式进行解析是可能的,但更好的方法是使用URL()对象/API(docs)。

const a = "https://www.google.com/hello/hi.php";
const hostname = new URL(a).hostname; // "www.google.com"

除了可以说是“更干净”之外,另一个优点是,如果底层的解析逻辑不正确,它是浏览器中的(潜在的安全性)错误,而不是您的代码,并且可能无需您的努力就可以修复。

相关问题