我有从工作区读取的 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);