删除第一个和最后一个反斜杠?

时间:2017-03-03 20:34:14

标签: javascript json regex

我在javascript中创建了一个示例数据生成器,输出是一个字符串化的json对象。现在我需要从输出中的每个元素中删除第一个/最后一个反斜杠。

当前输出为:

array(\"'This is' a test\",\"Testie Test\",\"Bob the tester\",\"Wanna test "some" more\")

需要输出:

array("'This is' a test","Testie Test","Bob the tester","Wanna test \"some\" more")

我需要对双引号的文本进行转义,但我需要删除第一个和最后一个反斜杠,然后将数据复制并上传到另一个工具并打破这些反斜杠。

我可以使用简单的正则表达式轻松删除所有反斜杠:

var = var.replace(/\\\\/g,"") 
然而,

然后内部文本不再被转义。我尝试过更复杂的正则表达式来实现这一目标,但没有成功。任何帮助表示赞赏。

由于

3 个答案:

答案 0 :(得分:1)

^(\\.)*(\\).$将匹配前一个字符前面的第一个反斜杠和反斜杠。

您可以直接测试字符串是以\"开头,还是以\"结尾,而不是正则表达式:

if (s.startsWith('\\"') && s.endsWith('\\"')) {
  clean_s = '"' + s.substr(2, s.length-4) + '"';
}

答案 1 :(得分:1)

您可以使用此正则表达式匹配您的字符串:

^\\(.*)\\(")$

第一个捕获组将捕获不包括起始反斜杠的整个字符串,但它不会捕获最后一个qoutes。最后一个qoutes将在第2组中捕获。您可以连接这两个组以获得所需的输出!

Regex Demo

答案 2 :(得分:0)

尝试使用JSON.parse(object)。它应该返回整个对象,进行解析。

此外,console.log(JSON.parse(object)["data"])应将整个值打印为数组。

根据您的评论,考虑到json的格式为:{"records": [{"id":"xxxx", "data":["text","text","text",...]},{"id":"xxx", "data":[ ..... ]},...]}

var parsed = JSON.parse(object);
var output = []
for (var i = 0; parsed["records"].length < i; i++) {
  output.push(parsed["records"][i]["data"]);
}
document.getElementById("textareafieldid").value = output;

确保在脚本中设置文本字段的ID与HTML中定义的相同。

<textarea id='textareafieldid'></textarea>