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

如何截取特定字符后的字符串?JS实现连缀域名拆分需求

拆分连缀.com域名字符串为数组的JS解决方案

嘿,这个需求我之前也碰到过,给你两个简单好用的JS实现方案,都能完美解决你的问题:

方法一:正则表达式匹配(推荐,更直接)

利用正则的非贪婪匹配特性,精准捕获每个以.com结尾的域名:

function splitDomainString(str) {
  // 非贪婪匹配所有以.com结尾的子串,确保每次匹配到最近的.com就停止
  const domainRegex = /.*?\.com/g;
  // match返回匹配结果数组,无匹配时返回空数组避免报错
  return str.match(domainRegex) || [];
}

// 测试一下
const inputStr = "example.comsuper.comregular.comextraordinary.comhello.com";
console.log(splitDomainString(inputStr));
// 输出: ["example.com", "super.com", "regular.com", "extraordinary.com", "hello.com"]

原理说明

  • .*?是非贪婪匹配,会尽可能少的抓取字符,直到遇到.com,这样就不会出现把多个域名连起来匹配的情况;
  • g修饰符表示全局匹配,会找出所有符合规则的子串;
  • 用|| []处理边界情况,如果输入字符串为空或者没有匹配项,会返回空数组而不是null。

方法二:split + filter + map组合(直观易懂)

通过拆分字符串再重组的方式实现,逻辑更清晰:

function splitDomainString(str) {
  // 按".com"拆分字符串,得到不带后缀的域名片段数组
  const domainParts = str.split('.com');
  // 过滤掉拆分后可能出现的空字符串,再给每个片段加上.com后缀
  return domainParts.filter(part => part.trim()).map(part => `${part}.com`);
}

// 测试示例
const inputStr = "example.comsuper.comregular.comextraordinary.comhello.com";
console.log(splitDomainString(inputStr));
// 输出同样符合预期

原理说明

  • split('.com')会把输入字符串拆分成["example", "super", "regular", "extraordinary", "hello", ""]这样的数组;
  • filter(part => part.trim())用来过滤掉最后一个空元素(因为原字符串结尾是.com,拆分后会多一个空项);
  • map遍历每个片段,给它们加上.com后缀,重组为完整的域名。

两种方法都能满足你的需求,选哪个看你个人习惯就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:19:59