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

如何编写匹配key=(value, value)格式的Regex实现字符串转数组/对象

问题原因分析

你使用的正则中.*为贪婪匹配模式,会尽可能多的匹配字符,直到命中整个字符串最后一个=的位置,因此会把前半段所有内容都归入分组1,仅保留最后一个等号后的内容到分组2,不符合多键值对拆分的需求。

正确正则及使用方法

正则表达式

/(\w+)\s*=\s*(\([^)]+\))/g

规则说明

  • (\w+):分组1匹配键名,支持字母、数字、下划线组成的合法变量名
  • \s*=\s*:匹配等号,兼容等号前后的任意空白字符
  • (\([^)]+\)):分组2匹配括号包裹的数值对,[^)]+限定匹配范围到右括号为止,不会跨键值对匹配
  • 末尾的g为全局匹配标识,用于匹配字符串中所有符合规则的键值对

代码示例(JavaScript)

// 输入字符串
const inputStr = '{xRate=(250.0, 260.0), yValue=(1.51, 1.54)}';
// 正则实例
const matchRegex = /(\w+)\s*=\s*(\([^)]+\))/g;
// 转换为目标数组格式
const result = Array.from(inputStr.matchAll(matchRegex), matchItem => [matchItem[1], matchItem[2]]);

console.log(result);
// 输出:[['xRate', '(250.0, 260.0)'],['yValue', '(1.51, 1.54)']]

测试用例test=(23, 34), var=(true , false)执行后输出为[['test', '(23, 34)'], ['var', '(true , false)']],符合预期。

正则学习资源推荐
  • 入门:《正则表达式必知必会》,内容精简,覆盖日常开发90%以上的常用正则场景,适合快速入门
  • 进阶:《精通正则表达式》,深入讲解不同语言正则引擎的实现差异,以及回溯、环视等高级用法
  • 练习:可以使用本地正则可视化工具,实时查看分组匹配结果,快速定位正则编写中的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:51:02