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

如何用正则将JS类对象/数组节点路径字符串转换为节点数组

解决方案

我们可以通过正则匹配路径中所有有效节点,自动过滤分隔符(.、[]、属性外层引号),同时将数字索引自动转换为数字类型,最终输出目标数组,支持任意层级的嵌套路径转换。

function pathToArray(pathStr) {
  // 正则匹配两类节点:点分隔的标识符、方括号内的数字/字符串属性
  const reg = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]/g;
  const result = [];

  pathStr.replace(reg, (match, num, quote, str) => {
    if (num) {
      // 方括号内数字索引,转数字类型
      result.push(Number(num));
    } else if (quote) {
      // 方括号内引号包裹的字符串属性,去除转义符
      result.push(str.replace(/\\(.)/g, '$1'));
    } else {
      // 点分隔的属性名,直接保留
      result.push(match);
    }
  });

  return result;
}

// 测试验证
const variableName = "parent1[0].child[2].grandChild['name'].deep_child";
console.log(pathToArray(variableName)); 
// 输出:['parent1', 0, 'child', 2, 'grandChild', 'name', 'deepChild']

实现说明

  • 正则匹配逻辑覆盖所有合法JS属性访问写法:
    • 匹配所有合法JS标识符作为属性名,支持大小写字母、数字、下划线组合
    • 兼容方括号内无引号的数字索引、单/双引号包裹的字符串属性两种写法
    • 自动处理字符串属性内部的转义字符,返回原始属性值
  • 适配任意层级的混合写法嵌套路径,无长度限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:48:03