为了账号安全,请及时绑定邮箱和手机立即绑定

为什么str.replace()没有效果

为什么str.replace()没有效果

慕容3067478 2019-02-19 17:16:15
上面这段代码为什么没办法从obj1中剪掉obj2这一段呢?输出的结果还是完完整整的obj1,仿佛什么都没操作过一样
查看完整描述

1 回答

?
慕仙森

TA贡献1827条经验 获得超8个赞

打开开发者工具,把patt打印出来,你会发现,patt如下:

https://img1.sycdn.imooc.com//5c73514b0001ed2e05690053.jpg

我们知道[]在正则表达式里面是有特殊含义的,表示字符集,匹配[]里面的任意一个字符,单纯看/[]/这个正则表达式,你会发现这个正则什么都匹配不了,因为[]表示需要匹配这个字符集里面的任意一个字符,但是这个字符集是空的,所以任何一个字符都不能匹配这个字符集,所以/[]/什么都不匹配,[]patt的一部分,所以这个正则什么都不匹配。

你可以手动将patt改成/{"name":"第一句的子节点","content":"1children","children":\[\]}/g,即将[]使用\去除特殊含义,你会发现替换成功了,截图如下:

https://img1.sycdn.imooc.com//5c73514e00013dab08000157.jpg

所以你需要先将JSON.stringify(obj2)里面的[]进行传化,代码如下:

patt = new RegExp(JSON.stringify(obj2).replace(/\[|\]/g, "\\$&"), 'g');

效果截图如下:

https://img1.sycdn.imooc.com//5c7351520001a1c108000119.jpg


查看完整回答
反对 回复 2019-02-25
  • 1 回答
  • 0 关注
  • 619 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号