javascript - 正则表达式 - 提取子域和域

标签 javascript regex url subdomain

我正在尝试形成一个正则表达式(javascript/node.js),它将从任何给定的 URL 中提取子域和域部分。这就是我最终的结果:

[^(?:http:\/\/|www\.|https:\/\/)]([^\/]+)

现在,我只是考虑使用 http、https 作为协议(protocol)并排除“www”。来自 URL 的子域 + 域部分的部分。我检查了表达式,它几乎可以工作。但是,这里是问题:

成功
'http://mplay.google.co.in/sadfask/asdkfals?dk=10'.match(/[^(?:http:\/\/|www\.|https:\/\/)]([^\/]+)/i)

'http://lplay.google.co.in/sadfask/asdkfals?dk=10'.match(/[^(?:http:\/\/|www\.|https:\/\/)]([^\/]+)/i)

失败
'http://play.google.co.in/sadfask/asdkfals?dk=10'.match(/[^(?:http:\/\/|www\.|https:\/\/)]([^\/]+)/i)

'http://tplay.google.co.in/sadfask/asdkfals?dk=10'.match(/[^(?:http:\/\/|www\.|https:\/\/)]([^\/]+)/i)

我只使用结果数组中的第一个元素。我无法理解为什么要“玩”。 &“播放”。不起作用。有人可以在这方面帮助我吗?

“/p”和“/t”对正则表达式求值器有什么意义吗?

有没有其他方法可以使用正则表达式从任何给定的 URL 中提取子域和域?

编辑 -

例子:

https://play.google.com/store/apps/details?id=com.skgames.trafficracer => play.google.com

https://mail.google.com/mail/u/0/#inbox => mail.google.com

最佳答案

您的正则表达式似乎不正确。试试这个正则表达式:

/^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n?]+)/img

RegEx Demo

关于javascript - 正则表达式 - 提取子域和域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25703360/

相关文章:

javascript - JQuery 与 .live 和 .remove 我无法弄清楚这一点

c# - 在 C# 中提取仅包含字母的字符串

http - Varnish 重定向

java - 如何从嵌入式视频中获取视频文件的正确 URL?

javascript - 无法在 Javascript 中调用函数 - Chart.js

javascript - RegExp 与 .html 扩展名完美配合,但不适用于 .php 扩展名

java - 在 java 中为以下数据编写正则表达式代码

regex - Ant replaceregexp 任务 - 匹配和替换 HTML 注释 block

java - 在 URL 和 Windows 文件名(Java)之间转换?

javascript - 将标记带到 Highcharts 中的网格线前面