如何从javascript文件中获取值并更新正则表达式中的新值



我有从工作区读取的 javascript 文件这是JavaScript的一部分

 "/*!
 * ${copyright}
 */
 .......

           a.initLibrary({
                            a: "a",
                            b: "b",
                            cattr: ["val1","val2"],
            });
      ...

我想向 cattr 参数添加新值

   var pattern = [sS]*?cattrs*:s*[([sS]*?)]/;
    var controlStr = oContent.match(pattern);
   var controlArr = controlStr[1].trim().replace(/"/g, "").split(",");
   var newInput = "val3"
  if ( controlArr[0] !== "" ){
        newInput += ",";
    }
    newInput += "t";
    oContent = oContent.replace("cattr: [",newInput );

我可以用正则表达式完成这一切吗? 在某些情况下,cattr 可能为空而没有任何值含义

          cattr :[]

我如何使用正则表达式而不是字符串逻辑来做到这一点?

如果您仍在寻求使用纯正则表达式。你可以试试这个。

let orig1 = `a.initLibrary({
                            a: "a",
                            b: "b",
                            cattr: ["val1","val2"],
            });`;
            
let orig2 = `a.initLibrary({
                            a: "a",
                            b: "b",
                            cattr: [],
            });`;            
            
const replaceFn = (match, capture1) => {
  let insertValue = "adsdas";
  if(capture1 === "]") return `cattr: ["${insertValue}"]`;
  return `cattr: ["${insertValue}",`;
}
let new1 = orig1.replace(/cattr:s*[s*(])?/, replaceFn);
let new2 = orig2.replace(/cattr:s*[s*(])?/, replaceFn);
console.log(new1);
console.log(new2);

最新更新