JavaScript中删除URL中域名和http后的所有内容

4
我有一个JavaScript变量中的完整URL,我想将其精简为纯URL。
例如: https://www.google.com/hello/hi.php, http://youtube.com 精简为:
www.google.com, youtube.com
我应该如何在JavaScript中实现此功能?
谢谢!
这与其他链接不同,因为我是在Chrome扩展程序中执行此操作,因此获取URL的唯一方法是使用Chrome扩展API,该API仅提供完整URL。因此,我需要剥离完整的URL。
3个回答

5
你可以尝试这个:

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

正则表达式在这里。


实时 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/>");
};


希望它有所帮助。

我不知道为什么这个被踩得那么多,它完美地工作,并且正是我所需要的。谢谢。当我能够时,我将在5分钟内接受它。 - kabeersvohra
@KVohra95。它被downvote了,因为我第一次尝试解决问题的方法真的很糟糕... - user4227915
1
@Jonny5。谢谢你的帮助。我已经更新了。 - user4227915
我在尝试在JavaScript中实现这个正则表达式,但遇到了困难。我知道如何在PHP中实现它,但您能帮忙吗?我该如何在JavaScript中应用这个正则表达式并返回有效的字符串部分?谢谢。 - kabeersvohra
@KVohra95。我已经更新了一个JavaScript示例。希望它有所帮助。 - user4227915
是的!完美,谢谢 :) - kabeersvohra

3
使用全局变量window.location.hostname即可获取此信息。

这样做很好,但我是通过Chrome扩展程序来完成的,因此我需要剥离完整的URL,因为我无法访问window.location.hostname。感谢您的建议。 - kabeersvohra
下次尝试在问题中指定您的开发环境,这样您就不会收到一堆关闭标志了。 - meskobalazs

0

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

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

除了更加“干净”之外,另一个优点是,如果基础解析逻辑不正确,那么这将是浏览器的(潜在的安全)漏洞,而不是你的代码,并且很可能会在没有你的努力下得到修复。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接