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

正则表达式解析求助:提取字符串方括号内内容生成数组

提取方括号内内容的正确解决方案

嘿,你之前的处理逻辑不小心把方括号外的字符(比如+4-)也带进结果里了——问题根源在于先做全局替换再分割的思路,破坏了原本的结构。正确的做法应该是直接精准匹配并提取所有方括号[]内部的内容,不用绕弯路处理外部字符。

最简实现代码

const str = "[App Version]+4-[Number 1 Q1-P3]";
// 一步到位提取所有方括号内的内容
const arr = str.match(/\[(.*?)\]/g).map(item => item.slice(1, -1));
console.log(arr); // 输出: ["App Version", "Number 1 Q1-P3"]

正则逻辑拆解

  • \[(.*?)\]:
    • \[ 和 \]:转义后匹配字面意义的方括号(因为方括号在正则里属于特殊元字符,必须转义才能匹配本身)
    • (.*?):非贪婪模式匹配任意字符,确保每次只匹配到最近的一个],不会把多个方括号的内容合并成一个匹配项
  • 先用match拿到所有[xxx]格式的字符串,再通过slice(1, -1)去掉每个字符串首尾的方括号,就得到我们需要的纯内容了。

另一种更直观的方式(直接捕获内部内容)

如果你想避免后续的slice操作,也可以通过循环捕获组来直接提取内容:

const str = "[App Version]+4-[Number 1 Q1-P3]";
const regex = /\[(.*?)\]/g;
const arr = [];
let matchResult;

// 循环匹配所有符合条件的内容
while ((matchResult = regex.exec(str)) !== null) {
  arr.push(matchResult[1]); // matchResult[1]就是方括号内的捕获内容
}

console.log(arr); // 输出: ["App Version", "Number 1 Q1-P3"]

这种方式不需要额外处理字符串,直接通过正则捕获组拿到目标内容,逻辑更清晰,也更容易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:38:52