如何从 URL 字符串中获取域名?
例子:
+----------------------+------------+
| input | output |
+----------------------+------------+
| www.google.com | google |
| www.mail.yahoo.com | mail.yahoo |
| www.mail.yahoo.co.in | mail.yahoo |
| www.abc.au.uk | abc |
+----------------------+------------+
Related:
- 通过正则表达式匹配网址 https://stackoverflow.com/questions/568864/maching-a-web-address-through-regex
我曾经不得不为我工作的公司编写这样的正则表达式。解决方案是这样的:
- 获取每个的列表ccTLD http://en.wikipedia.org/wiki/CcTLD and gTLD http://en.wikipedia.org/wiki/Generic_top-level_domain可用的。您的第一站应该是IANA http://www.iana.org/domains/root/db/。 Mozilla 的列表乍一看看起来很棒,但缺少 ac.uk 等示例,因此它实际上并不可用。
- 像下面的示例一样加入列表。一个警告:订购很重要!如果org.uk将出现在之后uk then example.org.uk会匹配org代替example.
正则表达式示例:
.*([^\.]+)(com|net|org|info|coop|int|co\.uk|org\.uk|ac\.uk|uk|__and so on__)$
这非常有效,而且也匹配奇怪的、非官方的顶级,比如de.com和朋友。
好处:
当然,这个解决方案的缺点是:
- 如果 ccTLD 更改或添加,则必须手动更新手写正则表达式。繁琐的工作!
- 正则表达式非常大,所以可读性不太好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)