匹配无www/com/co.uk等的纯域名Regex技术求助
解决提取纯主域名的正则问题
嘿,我完全懂你的困扰!想从各种带http/https前缀、www子域,还有不同后缀(比如.com、.co.uk)的URL里,精准抠出不带那些冗余部分的主域名(比如从你举的例子里拿到google),之前的正则只支持http确实会在https上失效,我来给你调整优化:
针对你给出的带www+协议前缀的场景
直接用这个正则就能搞定所有你列的例子:
^(?:https?://)(?:www\.)(.*?)\.
正则各部分解释:
^(?:https?://):匹配开头的http://或https://,s?表示s是可选的,?:用来标记这个组不需要被捕获,只做匹配用(?:www\.):精准匹配www.,同样用?:避免捕获这个冗余部分(.*?):非贪婪模式捕获到下一个.之前的内容——这就是我们要的纯主域名(比如google)\.:用来定位主域名后的第一个点,确保捕获停在正确的位置
测试你给的几个URL,捕获组1都会返回google,完美适配http和https的情况!
扩展:适配更多场景
如果你的URL可能存在不带www或者没有协议前缀的情况,比如http://google.com或www.google.co.uk,可以用更灵活的版本:
^(?:https?://)?(?:www\.)?(.*?)\.
这里的?标记了协议前缀和www部分都是可选的,能覆盖更多常见的URL格式。
内容的提问来源于stack exchange,提问作者Martyn Ball
相关产品推荐
相关产品推荐

