我的代码用双引号替换了所有对象键,但是单引号没有替换

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})

最佳答案

您可以尝试使用以下模式:

([{:,])'(\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\"');
alert(str)





结果:


  db.projects.insert({“ projectid”:“ 1001”,“ projteamname”:“ DBTeam”,“ amount”:100})

09-20 21:09