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

使用正则从主机名提取域名后缀(非完整域名)

提取主机名中的域名后缀(公共后缀)

嘿,我明白你要的是从主机名里精准提取.com、.co.uk这类域名后缀,而不是google.com这种完整域名对吧?刚好我之前处理过类似需求,给你几个实用的方案:

方案1:基础正则(覆盖常见后缀)

如果你只需要处理大部分主流的单段/双段后缀,这个轻量正则就能搞定:

\.[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)?$

拿你的示例测试:

  • www.google.com → 匹配结果:.com
  • google.co.uk → 匹配结果:.co.uk
  • sub.google.co.uk → 匹配结果:.co.uk

不过要注意,这个正则没法覆盖所有特殊多段后缀(比如.sch.uk、.co.za之外的罕见后缀),如果需要100%准确,得往下看。

方案2:精准匹配的静态正则(覆盖绝大多数主流后缀)

我整理了一个包含全球主流公共后缀的正则,能准确处理你给出的所有场景,以及绝大多数常用域名后缀:

\.(?:ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|com|org|net|edu|gov|mil|int|co\.uk|org\.uk|ac\.uk|gov\.uk|sch\.uk|co\.au|org\.au|gov\.au|edu\.au|co\.nz|org\.nz|gov\.nz|co\.jp|org\.jp|gov\.jp)$/i

正则里的i修饰符是为了忽略大小写,比如.COM也能正确匹配成.COM(如果需要统一小写,返回结果时加个.toLowerCase()就行)。

代码示例(JavaScript)

给你个直接能用的JS实现:

function extractDomainSuffix(hostname) {
  const suffixRegex = /\.(?:ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|com|org|net|edu|gov|mil|int|co\.uk|org\.uk|ac\.uk|gov\.uk|sch\.uk|co\.au|org\.au|gov\.au|edu\.au|co\.nz|org\.nz|gov\.nz|co\.jp|org\.jp|gov\.jp)$/i;
  const matchResult = hostname.match(suffixRegex);
  return matchResult ? matchResult[0] : null;
}

// 测试你的示例
console.log(extractDomainSuffix('www.google.com')); // 输出:.com
console.log(extractDomainSuffix('google.com')); // 输出:.com
console.log(extractDomainSuffix('google.co.uk')); // 输出:.co.uk
console.log(extractDomainSuffix('www.google.co.uk')); // 输出:.co.uk
console.log(extractDomainSuffix('sub.google.co.uk')); // 输出:.co.uk

进阶建议

如果你的需求需要覆盖所有可能的域名后缀(包括新出的顶级域名、罕见的多段后缀),静态正则就不够用了——毕竟后缀规则一直在更新。这种情况下,建议用专门处理公共后缀的库,比如Node.js里的psl包,它会自动同步最新的公共后缀列表,保证提取结果的准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:15:21