2017-09-11 4 views
-4

私は、その値の型が何であれ、そのキーに基づいてstringfied jsonのプロパティを削除したいと思います。しかし、その値が文字列でオブジェクトのルートレベルにある場合にのみそれを削除することは、うまくいくためにはうれしいでしょう。Regexはjsonプロパティを削除します

[,]{1}[\s]*?\"attrName\"[ ]*?[:][ ]*?\".*\"[^,]|\"attrName\"[ ]*?[:][ ]*?\".*\"[,]{0,1} 

例:私はこれを試してみましたhttps://regex101.com/r/PAlqYi/1

が、それはこのような単純な仕事をするために大きなたくさん見えるattrNameでは最初の属性であれば、どのようなそれがないことは、カンマが同様に削除されますことを確認されます、最後のot何かjson 3の真ん中に何か。誰かがこの正規表現をより読みやすくするために良いアイデアを持っていますか?

+5

**なぜ**あなたはJS環境からJSONを変更するために正規表現を使用しようとしていますか? – Amy

+1

正規表現ではできません。あなたはJSONを解析する必要があります。 – bfontaine

+3

'var obj = JSON.parse(str); obj [attrName]を削除します。 str = JSON.stringify(obj); –

答えて

0

あなたはそれがより安定し、読みやすいソリューションですパーサーを使用してのいずれかの方法を持っている場合。正規表現\s*\"attr\" *: *\".*\"(,|(?=\s+\}))は、短くて良いはずです。

Example

私は助けるために作られたいくつかの変更:

  1. [,]ようなので、多くの文字クラスを使用しないでください。文字クラスに要素が1つしかない場合は、それ自体を残す必要があります。
  2. 必要な場合にのみ、番号付きカウントを使用してください。例:{0,1}?であり、{1}は無意味です。
  3. の代わりに、それはチェックリストの末尾であれば}が行次があるかどうかを確認するために、前の行にカンマを探し、あなたは一緒にグループに条件分岐することができます。
  4. 肯定先読みは、それが置換時に除去されないように}を検索するために最後に使用されています。
関連する問題