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

如何用正则提取等号后的内容并保留数据类型信息?

提取等号后内容并保留类型的解决方案

需求与问题

  • 输入字符串:"Input: m = 2, n = 3, indices = [[0,1],[1,1]]"
  • 期望输出:[2, 3, [[0, 1], [1, 1]]](需保留数值、数组的原生类型)

尝试用正则eachEx.match(/= (.+)/)[1]时,会匹配到整段后续内容2, n = 3, indices = [[0,1],[1,1]],无法拆分出单个等号后的值;直接拆分字符串则会丢失数值、数组的类型信息,只能得到字符串。

可行解决方案

使用支持全局匹配的正则捕获每个等号后的有效值,再通过JSON.parse自动解析为对应类型:

代码示例

const inputStr = "Input: m = 2, n = 3, indices = [[0,1],[1,1]]";
// 匹配所有等号后的值(兼容数字、数组格式)
const matchIterator = inputStr.matchAll(/=\s*([\d\[\],]+)/g);
// 转换为数组并解析每个值的类型
const result = Array.from(matchIterator, item => JSON.parse(item[1]));

console.log(result); // 输出:[2, 3, [[0, 1], [1, 1]]]
console.log(typeof result[0]); // number
console.log(Array.isArray(result[2])); // true

说明

  1. 正则逻辑:/=\s*([\d\[\],]+)/g
    • =\s*:匹配等号及后续任意数量的空白字符
    • ([\d\[\],]+):捕获由数字、方括号、逗号组成的内容,刚好覆盖题目中的值类型
    • g标志:开启全局匹配,获取所有等号后的结果
  2. 类型保留:JSON.parse会自动将捕获的字符串解析为对应的数值或数组,无需手动转换类型
  3. 扩展兼容:如果后续需要支持带引号的字符串值,可将正则调整为/=\s*(["\d\[\],]+)/g,同样通过JSON.parse解析即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:55:16