我正在尝试将=替换为:,将其放在大括号中,并且不在单引号或双引号内(将c#构造函数转换为javascript}:

{name = 'John', something = "a=1", another = 'b=1'}


结果将是:

{name : 'John', something = "a=1", another = 'b=1'}


我已经尝试了很多,这是我想出的最后一件事,但与我想要的完全相反(仅更改引号中的内容)

 ss = ss.replace(/({[^}]+([^'"]))(=)((?:[^'"])(?:[^}]+)})/g, '$1:$4');


结果是:


  {name ='John',某物=“ a = 1”,另一个='b:1'}


和这个

/({[^}]+([^'"]))(=)((?:\2)(?:[^}]+)})/g


根本不匹配

最佳答案

你可以试试看



var s = "{name = 'John', something = \"a=1\", another = 'b=1'}";

console.log(s.replace(/=(?=\s*(['"])((?!\1).)*\1)/g, ':'))

关于javascript - 替换大括号中但不包含在引号中的字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38871830/

10-12 21:19