【问题标题】:javascript regex or string method to only match subdomain and domain (minus top levels)javascript 正则表达式或字符串方法仅匹配子域和域(减去顶级)
【发布时间】:2017-12-30 01:05:32
【问题描述】:

在浏览器中,我想弄清楚我所在页面的子域和域名是什么,减去“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-1mozilla

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

到目前为止,我已经跳过了 comco.uk,但没有跳过 wwworg.uk,并且在文件路径中的 . 之前没有其他任何内容:regex-test

现在的正则表达式是:

/[\w\-]{3,}(?=[.])/g

如何实现这一目标?

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

【问题讨论】:

  • 当您拥有.org.uk 域时会发生什么? .org 也匹配,这样
  • @jeremy-tille:之前看过那个。我想要一个匹配 voice-1 和一个匹配 mozilla 所以不要重复。
  • 谢谢,@aaron。固定。
  • 谢谢@luca-kiebel,这也是我想删除的内容,但不完全确定如何删除。

标签: javascript regex


【解决方案1】:

我设法得到this。摆脱了wwwindex

\.([\w\-]{3,})(?=[\.])

如果允许使用字符串方法,你可以试试这样的。

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

您将在result 中分别获得每个部分。您需要检查第一个元素(是否为www),最后两个元素相同(检查长度和内容)。我不认为你可以在这里使用任何模式。

【讨论】:

  • 但是我得到了 .voice-1.mozilla 作为匹配项。
  • 这不仅摆脱了www,而且摆脱了最低域级别,这可能是个问题。
  • @EspenKlem 你得到voicemozilla 作为组。
  • True @EganWolf,但是你有 Aaron 指出的问题
  • 谢谢@EganWolf!我将使用字符串方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多