正则表达式以在双引号内转义双引号

时间:2013-05-15 14:37:43

标签: javascript regex json

我有一个需要解析为JSON的字符串。

问题是,它有时可能包含双引号,导致解析错误。

例如:

{
    "id_clients":"58844",

    "id_clients_name" : ""100" test"qw"
}

我需要一个正则表达式,用"替换开始和结束\"之间的任何双引号。

感谢。

2 个答案:

答案 0 :(得分:5)

我尝试过它只是为了好玩,尽管修复发生器当然更好。这可能适用于您的情况,或至少激励您:

您可以尝试here

$( function() 
{
  var myString = "{ \"na\"\"me\": \"va\"lue\", \"tes\"\"t\":\"ok\" }";
  var myRegexp = /\s*\"([\w\"]+)\"\s*[,}:]/g;
  var match;
  var matches = [];

  // Save all the matches
  while((match = myRegexp.exec(myString)) !== null)
  {
      matches.push(match[1]);
      console.log(match[1]);
  }

  // Process them
  var newString = myString;
  for (var i=0; i<matches.length; i++)
  {
      var newVal = matches[i].replace(/\"/g, '\\\"'); 
      newString = newString.replace(matches[i], newVal);
  }
  alert(myString + "\n" + newString);
}
);

答案 1 :(得分:-1)

你可以试试,虽然这只适用于开场标签:

.replace(/\"\"/g, '\\""');