javascript正则表达式或字符串方法仅匹配子域和域(减去顶级)

javascript正则表达式或字符串方法仅匹配子域和域(减去顶级),javascript,regex,Javascript,Regex,在浏览器中,我想知道我所在页面的子域和域名是多少,减去像“com”和“.co.uk”这样的顶级域名 此外,如果子域是“www”,我不希望在该子域上有匹配项 示例: https://www.voice-1.mozilla.co.uk/folder/index.html https://www.voice-1.mozilla.org.uk/folder/index.html http://www.voice-1.mozilla.com/folder/index.html http://www.voi

在浏览器中,我想知道我所在页面的子域和域名是多少,减去像“com”和“.co.uk”这样的顶级域名

此外,如果子域是“www”,我不希望在该子域上有匹配项

示例:

https://www.voice-1.mozilla.co.uk/folder/index.html
https://www.voice-1.mozilla.org.uk/folder/index.html
http://www.voice-1.mozilla.com/folder/index.html
http://www.voice-1.mozilla.com:8080/folder/index.html
都将具有匹配的
voice-1
mozilla

不必维护顶级域会很好,但是维护
www
的不同变体是可以的

到目前为止,我已经跳过了
com
co.uk
,但没有跳过
www
org.uk
,也没有跳过文件路径中
之前的任何内容:

正则表达式现在是:

/[\w\-]{3,}(?=[.])/g
如何着手实现这一目标

编辑: 在正则表达式后面有一个步骤,修剪掉不需要的
www
co.uk
中的
co
org.uk中的
org
是可以的。但是我仍然需要在文件路径中的
之前删除顶层和其他任何内容。基本上,我抓取了从
/
到第一个
/
之间的所有东西,除了顶级域。

我设法得到了。摆脱了
www
index

\.([\w\-]{3,})(?=[\.])
如果允许使用字符串方法,您可以尝试以下方法

str = 'https://www.voice-1.mozilla.co.uk/folder/index.html'
arr = str.split('/')
result = arr[2].split('.')

您将在
结果中分别获得每个零件。您需要检查第一个元素(是否为
www
),最后两个元素相同(检查长度和内容)。我认为这里没有任何模式可供使用。

当您拥有
.org.uk
域时会发生什么
.org
也匹配,这种方式重复吗@杰里米·泰勒:我刚才看了那个。我想要一个匹配的
voice-1
和一个匹配的
mozilla
,所以不要重复。谢谢,@aaron。修正了。谢谢@luca kiebel,这也是我想要删除的东西,但不完全确定如何删除。但是我得到了
.voice-1
.mozilla
作为匹配项。这不仅消除了
www
,而且消除了最低域级别的内容,这可能是一个问题。@EspenKlem您可以将
voice
mozilla
作为一组。是的@EganWolf,但是您有亚伦指出的问题谢谢@EganWolf!我将使用字符串方法。