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

如何将字符串中带括号的内容提取到数组中?

提取字符串中带括号内容到数组的解决方案

嘿,要提取字符串里所有带方括号的完整内容到数组,其实用正则表达式是最省心高效的方式,比你考虑的forEach()或者indexOf()简单多啦!我给你两种实现方式,你可以根据需求选择:

方法一:正则表达式(推荐)

这种方法一行核心代码就能搞定,非常简洁:

var string = "This is some the text [and_this] and some more text [and_this2] and also [and_this3]";
// 定义正则:匹配所有以[开头、]结尾的内容,全局搜索
const bracketRegex = /\[.*?\]/g;
// 提取所有匹配项到数组
const resultArray = string.match(bracketRegex);

console.log(resultArray);
// 输出结果:["[and_this]", "[and_this2]", "[and_this3]"]

正则说明:

  • \[ 和 \]:转义方括号(因为正则里方括号是特殊语法,需要转义才能匹配字面量的括号)
  • .*?:非贪婪匹配模式,确保找到最近的]就停止,避免出现意外的过度匹配
  • g:全局匹配标志,会找出字符串中所有符合条件的内容

方法二:用indexOf手动遍历(适合理解底层逻辑)

如果你想手动实现查找逻辑,也可以用indexOf()配合循环来完成,不过代码会繁琐一些:

var string = "This is some the text [and_this] and some more text [and_this2] and also [and_this3]";
const resultArray = [];
let currentStart = 0;

while (true) {
  // 找到下一个[的位置
  const openPos = string.indexOf('[', currentStart);
  if (openPos === -1) break; // 没有更多左括号就退出循环
  
  // 找到对应]的位置
  const closePos = string.indexOf(']', openPos);
  if (closePos === -1) break; // 找不到对应右括号就退出
  
  // 提取从[到]的完整内容
  const matchedStr = string.slice(openPos, closePos + 1);
  resultArray.push(matchedStr);
  
  // 更新起始位置,继续查找下一组括号
  currentStart = closePos + 1;
}

console.log(resultArray);
// 同样输出:["[and_this]", "[and_this2]", "[and_this3]"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:09:44