JS如何截取两个相同字符之间的字符串?

来源:草根站长作者:坚哥头衔:草根站长
导读:本期聚焦于小伙伴创作的《JS如何截取两个相同字符之间的字符串?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《JS如何截取两个相同字符之间的字符串?》有用,将其分享出去将是对创作者最好的鼓励。

在JavaScript开发中,截取两个相同字符之间的字符串是高频需求,比如从格式为name:张三;age:20;city:北京的字符串中提取冒号之间的内容,或者从包含多个相同分隔符的文本中获取指定区间的内容。下面介绍几种常用的实现方式。

JS如何截取两个相同字符之间的字符串?

方法一:使用split分割字符串

split方法可以将字符串按照指定分隔符拆分为数组,通过数组下标即可获取两个相同字符之间的内容。这种方式适合分隔符出现次数较少、目标内容位置固定的场景。

// 示例:截取两个#之间的字符串
const str = 'abc#目标内容#def#其他内容#ghi';
// 按照#分割字符串,得到数组
const arr = str.split('#');
// 两个#之间的内容在数组下标1的位置
const result = arr[1];
console.log(result); // 输出:目标内容

如果分隔符出现多次,需要调整下标获取对应位置的内容,比如要获取第二个和第三个#之间的内容,下标就改为2即可。

方法二:使用indexOf配合substring截取

indexOf方法可以获取指定字符在字符串中首次出现的位置,通过两次调用indexOf分别获取两个相同字符的位置,再用substring截取区间内容。这种方式适合需要灵活控制截取区间的场景。

// 示例:截取两个@之间的字符串
const str = 'test@中间内容@end@more';
// 获取第一个@的位置
const firstIndex = str.indexOf('@');
// 获取第一个@之后第二个@的位置
const secondIndex = str.indexOf('@', firstIndex + 1);
// 截取两个@之间的内容,不包含@本身
const result = str.substring(firstIndex + 1, secondIndex);
console.log(result); // 输出:中间内容

需要注意如果字符串中不足两个目标字符,secondIndex会返回-1,此时需要做边界判断避免报错。

方法三:使用正则表达式匹配

正则表达式可以更灵活地匹配两个相同字符之间的内容,适合分隔符出现次数不固定、需要批量提取或者匹配复杂规则的场景。

// 示例:匹配两个$之间的内容,支持贪婪和非贪婪模式
const str = 'start$第一个$test$middle$end';
// 非贪婪匹配,匹配最短的两个$之间的内容
const reg1 = /$(.*?)$/;
const result1 = str.match(reg1);
console.log(result1[1]); // 输出:第一个

// 贪婪匹配,匹配最长的两个$之间的内容
const reg2 = /$(.*)$/;
const result2 = str.match(reg2);
console.log(result2[1]); // 输出:第一个$test$middle

正则中的.*?表示非贪婪匹配,会尽可能少地匹配字符;.*是贪婪匹配,会尽可能多地匹配字符,根据实际需求选择对应的模式即可。

不同方法的对比与选择

方法优点缺点适用场景
split分割代码简洁,逻辑直观需要提前知道目标内容在数组中的位置分隔符少、目标位置固定
indexOf+substring可灵活控制截取区间,边界可控需要多次调用方法,代码稍长需要动态定位字符位置
正则匹配支持复杂匹配规则,可批量提取正则语法有一定学习成本分隔符多、规则复杂、需要批量处理

注意事项

  • 使用split方法时,如果分隔符在字符串开头或结尾,会产生空字符串元素,需要提前处理。
  • 使用indexOf方法时,一定要判断返回的位置是否为-1,避免截取时出现异常。
  • 正则匹配时,如果目标字符串中包含换行符,需要给正则添加s修饰符,让.可以匹配换行符。
实际开发中可以根据具体的字符串格式和需求选择合适的方法,简单的场景优先用split或者indexOf方案,复杂场景再考虑正则匹配,既能保证代码可读性,也能提升执行效率。

JavaScript字符串截取正则匹配substringsplit修改时间:2026-07-20 03:51:27

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。