Javascript 将字符串内的单引号替换为双引号

Javascript 将字符串内的单引号替换为双引号,javascript,regex,object,Javascript,Regex,Object,我的代码用双引号替换所有对象键,但不替换带单引号的值 var str = "db.projects.insert({'projectid':'1001','projteamname':'DBTeam','amount':100})" var objKeysRegex = /({|,)(?:\s*)(?:')?([A-Za-z_$\.][A-Za-z0-9_ \-\.$]*)(?:')?(?:\s*):/g;// look for object names str = str.replace(ob

我的代码用双引号替换所有对象键,但不替换带单引号的值

var str = "db.projects.insert({'projectid':'1001','projteamname':'DBTeam','amount':100})"
var objKeysRegex = /({|,)(?:\s*)(?:')?([A-Za-z_$\.][A-Za-z0-9_ \-\.$]*)(?:')?(?:\s*):/g;// look for object names
str = str.replace(objKeysRegex, "$1\"$2\":");// all object names should be double quoted
console.log(str)
我无法得到下面的结果

Expected ouput
db.projects.insert({"projectid":"1001","projteamname":"DBTeam","amount":100})

我相信你在这里把事情复杂化了,如果你想做的就是替换所有的引号,这就足够了:

var str=“db.projects.insert({'projectid':'1001','projteamname':'DBTeam','amount':100})”;

警报(str.replace(/'/g,“));
您可以尝试使用以下模式:

([{:,])'(\w+)'/g; 
并替换为:

$1\"$2\"
var str=“db.projects.insert({'projectid':'1001','projteamname':'DBTeam','amount':100})”
var objKeysRegex=/([{:,])'(\w+)'/g;
str=str.replace(objKeysRegex,$1\“$2\”);

警报(str)
简单的str.replace(/'/g',“”);有什么错?
JSON.stringify({'projectd':'1001','projteamname':'DBTeam','amount':100})
@Cerbus replace在没有提供引号的情况下将失败var str=“db.projects.insert({projectd:'1001',projteamname:'DBTeam',amount:100})”是的,但是你从哪里得到这个字符串呢?而且,你知道这些引号在JavaScript中是可选的,对于键,对吗?