You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:正则匹配非标准TLD域名时表达式匹配全部内容

你的正则问题分析与修复方案

首先,咱们来拆解你遇到的问题:你想用正则匹配非标准TLD(不是.com/.net/.org)的域名/URL,但当前的正则.*(?<!\.(?:com|net|org)\/)把整个测试链接都匹配了,核心问题出在断言的位置和匹配逻辑的定位错误。

为什么你的正则会匹配全部内容?

你的正则逻辑是:“匹配任意字符,直到某个位置,该位置的前面没有.com/、.net/或.org/”。但你的测试链接http://www.spam-link.br/getmoneyhere.php的末尾是.php,字符串结尾的位置前面根本不存在.com/这类后缀,所以.*会直接匹配从开头到结尾的所有内容——完全没起到筛选域名后缀的作用。

你真正需要检查的是域名部分的结尾,而不是整个URL的结尾位置。

修复后的正则方案

根据你的需求(匹配包含非标准TLD域名的完整URL),可以用这个正则:

^https?://[^/]+(?<!\.com)(?<!\.net)(?<!\.org)/?.*$

逐段解释:

  • ^https?://:匹配URL开头的http://或https://(如果需要支持其他协议,比如ftp,可以改成[a-z]+://)
  • [^/]+:精准匹配域名部分——直到遇到第一个/(域名和路径的分隔符)
  • (?<!\.com)(?<!\.net)(?<!\.org):三个负后向断言,确保域名的结尾不是.com、.net或.org
  • /?.*$:匹配域名后可选的/,以及后续的所有路径内容(比如/getmoneyhere.php),直到字符串结束

测试验证

  • 对于你的测试链接http://www.spam-link.br/getmoneyhere.php:域名是www.spam-link.br,后缀是.br,符合非标准TLD,会被完整匹配。
  • 如果是http://example.com/page.php:域名结尾是.com,断言不满足,不会被匹配。

如果你只想提取域名部分

可以用带捕获组的正则,捕获组1就是目标域名:

https?://([^/]+(?<!\.com)(?<!\.net)(?<!\.org))

内容的提问来源于stack exchange,提问作者Brian Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:23:05