Leo*_*ana 0 javascript regex json dust.js
我想根据它的键删除字符串化 json 的属性,无论它在哪里,无论它的值类型是什么。但是只有当它的值是一个字符串并且它在对象的根级别时才删除它,这对开始来说会很好。我试过这个:
[,]{1}[\s]*?\"attrName\"[ ]*?[:][ ]*?\".*\"[^,]|\"attrName\"[ ]*?[:][ ]*?\".*\"[,]{0,1}
Run Code Online (Sandbox Code Playgroud)
示例:https : //regex101.com/r/PAlqYi/1
但是做这样一个简单的工作看起来很大,它所做的是确保逗号也将被删除,如果 attrName 是第一个属性,最后一个在 json 三个中间的东西。有没有人有更好的主意让这个正则表达式更具可读性?
如果你有任何使用解析器的方法,它是一个更稳定和可读的解决方案。正则表达式\s*\"attr\" *: *\".*\"(,|(?=\s*\}))应该更短更好。
我做出了一些改变来提供帮助:
[,]. 如果一个字符类中只有一个元素,它应该单独留下。{0,1}是?并且{1}是毫无意义的。}该行是否有后面的行允许您将条件组合在一起。}因此在替换过程中不会将其删除。使用评论中提到的错误修正进行更新。如果属性是最后一个,则将留下尾随逗号。我发现解决此问题的最简单方法是匹配这两种情况。所以,你必须填写 attr 两次。
(,\s*\"attr\" *: *\".*\"|(?=\s*\}))|(\s*\"attr\" *: *\".*\"(,|(?=\s*\})))