最终的结论:

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. 单线程 Redis 如此快的 4 个原因

    本文翻译自国外论坛 medium,原文地址:https://levelup.gitconnected.com/4-reasons-why-single-threaded-redis-is-so-fas ...

  2. 你做的 9 件事表明你不是专业的 Python 开发人员

    本文转载自国外论坛 medium,原文地址: https://medium.com/navan-tech/7-java-features-you-might-not-have-heard-of-ade ...

  3. freeswitch的mod_xml_curl模块动态获取configuration

    概述 freeswitch是一款简单好用的VOIP开源软交换平台. mod_xml_curl模块支持从web服务获取xml配置,本文介绍如何动态获取acl配置. 环境 centos:CentOS  r ...

  4. Angular系列教程之模板语法

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  5. APB Slave状态机设计

    `timescale 1ns/1ps `define DATAWIDTH 32 `define ADDRWIDTH 8 `define IDLE 2'b00 `define W_ENABLE 2'b0 ...

  6. 【ThreadX】Azure RTOS ThreadX概述

    Azure RTOS ThreadX是Microsoft的高级工业级实时操作系统(RTOS),专门用于深度嵌入式,实时和IoT应用程序.Azure RTOS ThreadX提供了高级计划,通信,同步, ...

  7. SpringBoot3集成Zookeeper

    标签:Zookeeper3.8 ,Curator5.5: 一.简介 ZooKeeper是一个集中的服务,用于维护配置信息.命名.提供分布式同步.提供组服务.分布式应用程序以某种形式使用所有这些类型的服 ...

  8. 【Kafka系列】(二)Kafka的基本使用

    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 文章更新计划 系列文章地址 Kafka 线上集群部署方案怎么做 ...

  9. FIO的再学习-不同Raid,不同磁盘性能验证

    FIO的再学习-不同Raid性能验证 背景 发现自己对iodepth的和num_jobs的理解存在偏差 找了一些资料才发现自己很多地方做的不对. 这里找到一个新资料可以进行模拟数据库的测试 测试配置文 ...

  10. [转帖]vs调试运行程序出现:“由于找不到MSVCP140D.dll,无法继续执行代码 ”的解决方法

    碎碎念 最近在使用Visual studio调试程序的时候,突然冒出了"由于找不到MSVCP140D.dll,无法继续执行代码.重新安装程序可能会解决次问题."的错误.如下图所示. ...