正则表达式从任何域提取域名

Kyl*_*est 2 c# regex

我正在尝试从C#中的字符串中提取域名.您不一定要使用RegEx,但我们应该能够yourdomain.com从以下所有内容中提取:

yourdomain.com
www.yourdomain.com
http://www.yourdomain.com
http://www.yourdomain.com/
store.yourdomain.com
http://store.yourdomain.com
whatever.youdomain.com
*.yourdomain.com
Run Code Online (Sandbox Code Playgroud)

此外,任何TLD是可以接受的,所以更换所有上述与.net,.org,'co'uk等.

bob*_*nce 15

  1. 如果没有方案存在(字符串中没有冒号),请在"http://"前加上一个有效的URL.

  2. 将字符串传递给Uri构造函数.

  3. 访问Uri的主机属性.

现在你有了主机名.你究竟认为给定主机名的"域名"究竟是一个值得商榷的问题.我猜你不是简单地说第一个点之后的所有东西.

不可能将'whatever.youdomain.com'等主机名与像'warwick.ac.uk'这样的SLD中的域名区分开来.事实上,考虑到一些注册商努力开拓自己的利基市场,甚至还有一些关于什么是公共SLD的灰色区域.

一种常见的方法是维护一个由不相关实体使用的SLD和其他后缀的大列表.这就是Web浏览器为阻止不必要的公共cookie共享所做的事情.一旦找到了公共后缀,就可以在主机名中添加一个最接近的前缀,用点分割,以获得负责给定主机名的最高级实体,如果这是您想要的.后缀列表是难以维护的,但你可以捎带别人的努力.

或者,如果您的应用程序具有执行此操作的时间和网络连接,则可以开始嗅探有关主机名的信息.例如.它可以对主机名执行whois查询,并继续查看每个父项,直到获得结果,这将是负责给定主机名的最低级实体的域名.

或者,如果所有这些工作太多,你可以尝试切断任何领先的'www'.当下!