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

如何使用正则表达式提取字符串中冒号前后的键值分别存入数组

解决方法

这里提供两种常用的实现方式,均能达到你的需求:

1. split拆分法(推荐,逻辑简单易读)

先按分号拆分出所有独立键值对,再对每个键值对按冒号拆分,分别存入两个数组即可:

var str = "current_year:45;last_year:20;all:65";
var a = [];
var b = [];

str.split(';').forEach(keyValuePair => {
  const [key, value] = keyValuePair.split(':');
  a.push(key);
  b.push(value);
})

健壮性优化:如果字符串可能存在末尾多余分号的情况,可将拆分逻辑改为str.split(';').filter(Boolean).forEach(...),过滤空值避免异常。

2. 正则匹配法

你之前写的正则规则本身没问题,只需要正确提取匹配到的分组即可:

var str = "current_year:45;last_year:20;all:65";
var a = [];
var b = [];
const reg = /([^:\s]+):([^:\s]+)/g;
let matchResult;

while ((matchResult = reg.exec(str)) !== null) {
  a.push(matchResult[1]);
  b.push(matchResult[2]);
}

更简洁的ES6+写法:

const matches = Array.from(str.matchAll(/([^:]+):([^;]+)/g));
const a = matches.map(item => item[1]);
const b = matches.map(item => item[2]);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:18:00