javascript - 正则表达式替换 JSON 字符串中的特殊字符不起作用

标签 javascript json

我很难过...

http://codepen.io/anon/pen/rjjGEE

为什么regex javascript 字符串替换对具有特殊字符的字符串起作用,但对转换为字符串的对象不起作用?

let regex = /[\t\r\n]/g

var directString = "{'name':{'first':' billy bob ','last':'\n\rjoe\tblow'}}"
console.log(directString.replace(regex, "a"));

//Output: "{'name':{'first':' billy bob ','last':'aajoeablow'}}"


let obj = {
      name: {
        first: " billy bob  ",
        last: "\n\rjoe\tblow"
      },

    }

let objAsString = JSON.stringify(obj);
let stringifiedString = objAsString.replace(regex, "a")
console.log(stringifiedString)

//Output: "{'name':{'first':' billy bob  ','last':'\n\rjoe\tblow'}}"

//??? Why isn't \n\r and \t being replaced????

最佳答案

当您在字符串常量中使用像 \n\t 这样的转义符时(就像您的第一个示例),您最终得到的是一个包含预期的字符串特殊字符(换行符或制表符)。

然而,当您对一个对象进行 JSON 编码时,您最终得到的是一个包含转义序列本身 的字符串,而不是特殊字符。 JSON.stringify() 所做的工作必须包括确保 JSON 的后续解析 将重新创建所有字符串值对象属性的原始值.因此它将字符串中嵌入的特殊字符 back 转换为转义序列。您的正则表达式正在寻找特殊字符,而不是转义序列。

关于javascript - 正则表达式替换 JSON 字符串中的特殊字符不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41732176/

相关文章:

json - 如何在 Swift 中初始化结构时正确声明数组类型

python - Python Pandas如何正确规范化json

java - 将 JsonObject 存储到 JsonArray & JsonException 错误消息

javascript - 当选中一定数量的复选框时运行 jQuery 函数

javascript - rxjs 合并在 Angular5 中无法按预期工作

javascript - Ajax/Json 数据的大量 Jquery 附加的替代方案

javascript - 如何使用 jQuery 的 ajax 方法将 json 数组发送到 PHP?

javascript - 如何在 javascript 点击事件之外调用函数

javascript - $zopim 未定义

javascript - 如何使用hexo按类别获取帖子?