首页 > 解决方案 > Javascript 正则表达式将括号 [] 表示法转换为点表示法

问题描述

我正在尝试将符号 variableName[field1][field2] 中的一些变量转换为符号 variableName.field1.field2

我这样做的原因是因为用户可以在 UI 中输入变量名,我不想直接 eval() 它们,所以我通过这个函数运行它们:

function getDescendantProp(obj, desc) {
   var arr = desc.split(".");

   while (arr.length) {
       obj = obj[arr.shift()];
   }
   return obj;
}

这使它无需在运行时评估代码即可获得变量值。不幸的是,如果变量以方括号表示法 [ ] 给出,这不起作用

标签: javascriptarraysregex

解决方案


将其转换为点的基本正则表达式

var str = "variableName[field1][field2]"
console.log(str.replace(/\[([^\]]+)\]/g, '.$1'))


推荐阅读