最终的结论:

JSON.stringify(userInfo).replace(/([{,]\")_(\w*\":)/g, "$1$2");

开头锁定《以 {"_ 或 ,"_ 开头》     +   中间锁定《只能是 \w(即26个英文字母大小写和数字以及下划线)保证中间不能出现\转义字符》 +     结尾锁定(必须以":结尾,从而避开字符串数组的问题)

======================

以上基本上绝了,开头 + 中间 + 结尾 三层锁定一定是key,解决了所有情况的匹配。

===================================================================

{
"_name": "liyuxin",
"_age": 20,
"_sex": true,
"_address": {
"_province": "guang_dong",
"_city": "guang_zhou",
"_distinct": "_panyu\"yinhao"
},
"_strAry": [
"str111",
"str222"
]
}

重要思路,不按照这个思路来就是思路,重要点:值中若有"双引号,则一定会有 \ 转义字符,那么如何利用正则来匹配key呢,只需要做到 {"_ 这三个字符是连着的 或 ,"_ 这三个字符是连着的,就可以绝对匹配key,因为引号在中间,若只值中有引号,则前面

肯定有转移字符\,如:

//就是这么简单

下面来解释一下 这个正则:

([{,])(\")_ 会匹配到 {"_ 和 ,"_ ,其中 $1 = {, $2 = " ,意思是 用$1+$2 即:{"或 ,"来替换掉:{"_ 或 ,"_  。从而最终 去除掉 key 的开头下划线,其中重要的思路是:
"双引号一定不会在值里出现。第一个字符 必须锁定成 {或 , 即:{"_ 和 ,"_ 必须是连续的三个字符。



留意点:不能使用 ([^\\])(\")_的方式,因为:
 

[]表示的是字符的范围如下:

关于()的解释:()可以分成9组,主要用来把联合匹配到的结果 分成多个组,然后替换的值那里,再次利用 $1-$9 再来替换匹配到的结果,达到双次替换的目的。牛逼了 无所不能!!

看下运行结果:

console.log(JSON.stringify(userInfo));
console.log(JSON.stringify(userInfo).replace(/([{,])(\")_/g, "$1$2"));

以下是运行结果:

{"_name":"liyuxin","_age":20,"_sex":true,"_address":{"_province":"guang_dong","_city":"guang_zhou","_distinct":"_panyu\"yinhao"},"_strAry":["str111","str222"]}

{"name":"liyuxin","age":20,"sex":true,"address":{"province":"guang_dong","city":"guang_zhou","distinct":"_panyu\"yinhao"},"strAry":["str111","str222"]}

=======================

2020-09-26 更新,只有开头和中间部分锁定的时候,会有一个问题,李庆庆提出的:

{"_name":"liyuxin","_age":["qwe","_qwe"],"_sex":true,"_address":{"_province":"guang_dong","_city":"guang_zhou","_distinct":"pan\"_yua\":\"asdf\""}}

正则表达式,JSON.stringify() 去除 所有 key的下划线!!一句顶很多句。的更多相关文章

  1. json字符串中key值下划线命名转换为驼峰命名

    json字符串中key值下划线命名转换为驼峰命名: 例如: 原json串: String json= "{'user_name':'ok','user_sex':0,'object_info ...

  2. 使用CSS去除 去掉超链接的下划线方法

    我们可以用CSS语法来控制超链接的形式.颜色变化,为什么链接一定要使用下划线和颜色区分呢? 其主要原因主要是考虑到   1.视力差的人 2.色盲的人 ... 下面我们做一个这样的链接:未被点击时超链接 ...

  3. js正则表达式只能是数字、字母或下划线

    //只能是数字.字母或下划线 function isValid(str) { var reg = /^\w+$/g; return reg.test(str); }

  4. Android自定义EditText去除边框并添加下划线

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  5. 去除a标签的下划线

    a:link ,a:visited,a:hover,a:active { text-decoration: none;}

  6. 去除router-link中的下划线

    文章目录 1.设置router-link的样式 2.效果展示 1.设置router-link的样式 text-decoration: none; 2.效果展示

  7. IE兼容模式下两个小问题,JSON.stringify和SCRIPT70 无权限

    JSON.stringify在IE兼容模式下不起作用,原来是序列化对象是一个easyuiTree的树节点对象,过于复杂的对象 SCRIPT70 权限,问题出现在获取页面iframe时: var ifr ...

  8. JSON.stringify////////////////////////////////zzzzzzzzzzzzzz

    JSON.stringify 语法实例讲解 可能有些人对系列化这个词过敏,我的理解很简单.就是说把原来是对象的类型转换成字符串类型(或者更确切的说是json类型的).就这么简单.打个比方说,你有一个类 ...

  9. JSON.stringify()

    概述 JSON.stringify() 方法可以将任意的 JavaScript 值序列化成 JSON 字符串. 语法 JSON.stringify(value[, replacer [, space] ...

  10. JSON.stringify的使用方法

    语法: JSON.stringify(value [, replacer] [, space]) value:是必须要的字段.就是你输入的对象,比如数组啊,类啊等等. replacer:这个是可选的. ...

随机推荐

  1. Python定位错误:段错误 (核心已转储)

    技术背景 在各种编程语言中都有可能会遇到这样一个报错:"段错误 (核心已转储)".显然是编写代码的过程中有哪里出现了问题,但是这个报错除了这几个字以外没有任何的信息,我们甚至不知道 ...

  2. 【BAT】递归替换文件后缀

    @echo off set /p src_suffix=please input origin suffix: set /p des_suffix=please input target suffix ...

  3. 【LINT】cpplint 分析笔记

    cpplint 分析笔记 · [前提得看下google规范] @2022-1-13 20:44:48 error message formate: [filename] [linenum] [mess ...

  4. 文心一言 VS 讯飞星火 VS chatgpt (185)-- 算法导论14.1 2题

    二.用go语言,对于图 14-1中的红黑树 T 和关键字 x.key 为35的结点x,说明执行 OS-RANK(T,x) 的过程. 文心一言: 在红黑树中,OS-RANK(T, x) 是一个操作,用于 ...

  5. 【Mysql系列】(二)日志系统:一条更新语句是如何执行的

    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 这篇文章是从Github ReadMe拷贝的,内容实践下载是没问题的,能够正 ...

  6. [转帖]PD Control 使用说明

    https://docs.pingcap.com/zh/tidb/stable/pd-control PD Control 是 PD 的命令行工具,用于获取集群状态信息和调整集群. 安装方式   注意 ...

  7. goofys 鲲鹏上面编译挂载与性能测试

    goofys 鲲鹏上面编译挂载与性能测试 介质 使用go进行编译. 官网上面有 amd64的介质,但是没有aarch64的介质 需要自行编译 前几天一直编译失败. 周天在家自己测试了一把,根据gith ...

  8. 【转帖】Linux查看二进制文件:一招制敌(linux二进制查看文件)

    https://www.dbs724.com/146055.html 一招制敌:学会Linux查看二进制文件 在Linux操作系统中,二进制文件是一种常见的文件类型.如果你想深入了解一个二进制文件,可 ...

  9. [转帖]linux shell 脚本一些主要知识点整理

    文章目录 一./bin/sh 与 /bin/bash 的区别 二.vi与vim的区别 三.shell变量 四.Shell字符串 五.Shell函数 六.Shell基本运算符 1.Shell expr: ...

  10. [转帖]基于腾讯云微服务引擎(TSE) ,轻松实现云上全链路灰度发布

    https://my.oschina.net/u/4587289/blog/8570699 1.  概述 软件开发过程中,应用发布非常频繁,通常情况下,开发或运维人员会将系统里所有服务同时上线,使得所 ...