javascript正则表达式或字符串方法仅匹配子域和域(减去顶级)
在浏览器中,我想知道我所在页面的子域和域名是多少,减去像“com”和“.co.uk”这样的顶级域名 此外,如果子域是“www”,我不希望在该子域上有匹配项 示例: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
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!我将使用字符串方法。